1,出現問題的代碼:
- /***
- * 請求靜態html 模板
- * @param url
- * @param $jqueryDiv : 四個主要div之一
- * @param templateHandle : 自定義,用於使用Dot js模板函數
- * @param callback : 用於實現模板之後,綁定事件
- * @param templateData : cia的返回數據
- */
- ajaxHtml: function (url, $jqueryDiv, templateHandle, callback, templateData) {
- xhr.ajaxHtmlCommon(url, $jqueryDiv, null, templateHandle, callback, templateData);
- },
- /***
- * ajax 請求靜態html文件
- * @param url
- * @param $jqueryDiv
- * @param data
- * @param callback : 回調函數,updateHtml 方法之後執行
- */
- ajaxHtmlCommon: function (url, $jqueryDiv, requestData, templateHandle, callback, templateData) {
- var argument_length = arguments.length;
- var isHasCallback = (argument_length > 4 && callback && typeof callback === 'function');
- var options22 = {
- url: url,
- type: "GET",
- timeout: 18000,
- dataType: 'html',
- success: function (html) {
- updateHtml($jqueryDiv, html, templateHandle, templateData);
- /* var $formInput = jqueryObj.find('textarea:first');//讓subContent 中的textarea聚焦
- if ($formInput.length != 0) {//先判斷能不能獲取到textarea
- $formInput.get(0).focus();
- }*/
- if (isHasCallback) {
- callback($jqueryDiv, html);
- }
- },
- error: function (er) {
- if (er.statusText == 'timeout') {
- updateHtml($jqueryDiv, "<div style='color: red'>連接服務器超時!</div>");
- } else {
- var errorMessage2;
- if (er.responseText) {
- errorMessage2 = er.responseText;
- } else {
- errorMessage2 = er.statusText;
- }
- console.log('error:' + errorMessage2);
- updateHtml($jqueryDiv, errorMessage2, templateHandle, templateData);
- }
- if (isHasCallback) {
- callback($jqueryDiv, er);
- }
- }
- };
- if (argument_length > 2 && requestData != null && requestData != undefined) {
- options22.data = requestData;
- options22.type = "POST";
- }
- $.ajax(options22);
- }
瀏覽器版本:IE8
獲取html模板時報錯:
- var ajaxHtml4IE8 = function () {
- xhr.ajaxHtml('cross_domain.html', $('#crossDiv'), null, null, null);
- }
報錯信息:TypeError 拒絕訪問
2,解決方法:
(1)在js文件頭部增加:
- jQuery.support.cors = true;
(2) html文件引入jQuery.XDomainRequest.js
- <!--[if IE 8]>
- <script type="text/javascript"
- src="jQuery.XDomainRequest.js"></script>
- <![endif]-->
(3) 靜態html模板前面增加:
<meta http-equiv="Access-Control-Allow-Origin" content="*">
注意:
(1)靜態HTML模板前要增加<meta http-equiv="Access-Control-Allow-Origin" content="*">,表示服務器端支持跨域.
(2)只有IE8 纔有跨域拒絕訪問的問題,所以引入第三方js文件時,要使用<!--[if IE 8]>
jQuery.XDomainRequest.js 見附件
參考:https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
http://stackoverflow.com/questions/10232017/ie9-jquery-ajax-with-cors-returns-access-is-denied
頂
踩
發表評論
- 瀏覽: 957027 次
- 性別:
- 來自: 北京
最近訪客 更多訪客>>
最新評論
-
ssm44124412: ...
點贊功能的設計 -
chen_lian: HttpStatus.CREATED 改爲HttpStatus ...
spring mvc 下載文件 -
chen_lian: 樓主我給補充了一下 嘿嘿
spring mvc 下載文件 -
chen_lian: public class FileUtil { /** ...
spring mvc 下載文件 -
chen_lian: FileUtils 這個類沒有源碼
spring mvc 下載文件
評論排行榜