1. 程式人生 > >解決ajax跨域請求瀏覽器相容問題

解決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({
                .....
           });
     //或者這樣定義
    var tip= { ..... };
  • 問題:在ie8ie9下出現avalon.router 未定義的問題

    * 解決方法**:在mmRequest.js引入後,新增 if lt IE 9 示例如下:

       <!--[if lt IE 9]>
       <script src="./js/mmRouter.js"></script>
       <![endif]-->