解決ajax跨域請求瀏覽器相容問題
call.js 解決ajax跨域請求的瀏覽器相容問題
ie8、9 ajax 跨域
### 問題描述 ###
avalon.ajax只對ie10以下的get跨域請求進行處理通過(jsonp)解決,沒有相容ie10以下的post跨域請求 .因此要解決avalon.ajax對ie8 9 跨域 post請求不支援的問題
### 使用方法 ###
使用$.call()方法實現ajax請求
示例如下:
javascript
$.call({
//get or post請求
type: 'post',
//請求url地址
url: 'http://'+ apiURL + '/index.php? i=5000&tsy=' + home.tsy,
//傳送的資料
data: {"Number": 6},
//請求成功時的回撥函式
success: function (data) {
...do something
}
});
### 整體實現思路 ###
首先判斷瀏覽器版本,若為ie8 9 ,則使用XDomainRequest來進行跨域請求。否則,則將引數自動傳入 avalon.ajax中呼叫。
在本檔案中實現重點就是實現對ie8 ie9的跨域請求。
遇到的問題
問題:tip和door等物件所在檔案是通過index.html靜態加入的,所以這些物件定義時使用require方法會出現錯誤(這些物件未定義)。
解決方法:不用requie定義並返回物件,而直接定義成物件
示例如下:var tip = avalon.define({ ..... }); //或者這樣定義
問題:在ie8ie9下出現avalon.router 未定義的問題
* 解決方法**:在mmRequest.js引入後,新增 if lt IE 9 示例如下:
<!--[if lt IE 9]> <script src="./js/mmRouter.js"></script> <![endif]-->