針對jquery的ajax中的參數理解


1. url

發送請求的地址。為空表示當前頁。 

 1 $.ajax({
 2     type: "post",
 3     data: studentInfo,
 4     contentType: "application/json",
 5     url: "/Home/Submit",//請求的接口
 6     beforeSend: function () {
 7         // 禁用按鈕防止重復提交
 8         $("#submit").attr({ disabled: "disabled" });
 9     },
10     success: function (data) {
11         if (data == "Success") {
12             //清空輸入框
13             clearBox();
14         }
15     },
16     complete: function () {
17         $("#submit").removeAttr("disabled");
18     },
19     error: function (data) {
20         console.info("error: " + data.responseText);
21     }
22 });
View Code

2. type

請求方式,get或post或put或delete。默認為get。put和delte不是得到所有的瀏覽器支持。

 1 $.ajax({
 2     type: "post",//請求的方式
 3     data: studentInfo,
 4     contentType: "application/json",
 5     url: "/Home/Submit",
 6     beforeSend: function () {
 7         // 禁用按鈕防止重復提交
 8         $("#submit").attr({ disabled: "disabled" });
 9     },
10     success: function (data) {
11         if (data == "Success") {
12             //清空輸入框
13             clearBox();
14         }
15     },
16     complete: function () {
17         $("#submit").removeAttr("disabled");
18     },
19     error: function (data) {
20         console.info("error: " + data.responseText);
21     }
22 });
View Code

3. dataType

預期服務器返回的數據類型。若沒指定,則自動根據http包中的mime信息來判斷。可用值為xml,html,script,json,jsonp,text。

 1 $.ajax({
 2           url: "/count/storage/data?callback=storageSurvey",
 3           dataType: "json",  //指定服務器返回的數據類型為json
 4           type: "GET", 
 5           async:true,  
 6           jsonp: "callback", ///指定參數名稱,默認為callback  
 7           jsonpCallback:"storageSurvey", //指定回調函數名稱
 8           success: function (data) {
 9                    storageSurvey_local(data);
10           },
11           error:function () {
12             alert("error");
13     }
14 }
View Code

4. async

默認為true,即請求為異步請求,這也是ajax存在的意義。但同時也可以將這個參數設置為false,實現同步請求。(同步請求會鎖定瀏覽器,直到這個請求結束后才可以執行其他操作)

 1 $.ajax({
 2                     url: "/Handle/Do.aspx",
 3                     type: "post",
 4                     data: { id: '0' },
 5                     async:true,//默認異步false,同步true。
 6                     dataType: "json",
 7                     success: function(msg) {
 8                         alert(msg);
 9                     },
10                     error: function(XMLHttpRequest, textStatus, errorThrown) {
11                         alert(XMLHttpRequest.status);
12                         alert(XMLHttpRequest.readyState);
13                         alert(textStatus);
14                     },
15                     complete: function(XMLHttpRequest, textStatus) {
16                         this; // 調用本次AJAX請求時傳遞的options參數
17                     }
18                 });
View Code 

5. headers

jQuery1.5添加。一個用於一起進行請求的額外的key/value對的map。這項需要在beforeSend方法被調用前設置,因為headers中的任意值都有肯那個在beforeSend方法中被覆蓋。

 1 通過beforeSend獲取Header信息
 2 $.ajax({
 3                     type: "GET",
 4                     url: "default.aspx",
 5                     beforeSend: function(request) {
 6                         request.setRequestHeader("token", "token");
 7                     },
 8                     success: function(result) {
 9                         alert(result);
10                     }
11                 });
12 
13 setting參數 headers 比如項目中請求接口需要傳token
14 $.ajax({
15     headers: {
16         Accept: "application/json; charset=utf-8",
17       Authorization: token
18     },
19     type: "get",
20     success: function (data) {
21     }
22 });
View Code

6. beforeSend (XHR)

這個方法是用來在發送請求前修改XMLHttpRequest對象的,若修改失敗返回false,則取消此次ajax請求.

 1 $.ajax({
 2     type: "post",
 3     data: studentInfo,
 4     contentType: "application/json",
 5     url: "/Home/Submit",
 6     beforeSend: function () {//請求前做的事
 7         // 禁用按鈕防止重復提交
 8         $("#submit").attr({ disabled: "disabled" });
 9     },
10     success: function (data) {
11         if (data == "Success") {
12             //清空輸入框
13             clearBox();
14         }
15     },
16     complete: function () {
17         $("#submit").removeAttr("disabled");
18     },
19     error: function (data) {
20         console.info("error: " + data.responseText);
21     }
22 });
View Code

7. cache

默認為true,設置為false即不緩存。(當datatype為script或jasonp時默認為fasle)

 1 $.ajax({
 2     type: "post",
 3     data: studentInfo,
 4     contentType: "application/json",
 5     url: "/Home/Submit",
 6     cache:true,//默認為true,false不清緩存。
 7     beforeSend: function () {
 8         // 禁用按鈕防止重復提交
 9         $("#submit").attr({ disabled: "disabled" });
10     },
11     success: function (data) {
12         if (data == "Success") {
13             //清空輸入框
14             clearBox();
15         }
16     },
17     complete: function () {
18         $("#submit").removeAttr("disabled");
19     },
20     error: function (data) {
21         console.info("error: " + data.responseText);
22     }
23 });    
View Code

8. data

發送到服務器的數據。必須為key/value格式。且自動轉換為query string,get請求會將字符串附加在url后。

View Code

9. traditional

設置為true,用傳統的方式來序列化數據。

View Code

10. timeout

設置請求超時時間,毫秒為單位。此設置會覆蓋全局設置,即所有ajax請求共享同一個超時時間。

$.ajax({
  url: '' , //請求的URL
  timeout : 1000, //超時時間設置,單位毫秒
  type : 'get' , //請求方式,get或post
  data :{}, //請求所傳參數,json格式
    dataType: 'json' , //返回的數據格式
    success: function (data){ //請求成功的回調函數
      alert( "成功" );
  },
  complete : function (XMLHttpRequest,status){ //請求完成后最終執行參數
       if (status== 'timeout' ){ //超時,status還有success,error等值的情況
        ajaxTimeoutTest.abort();
      alert( "超時" );
    }
  }
  });

11.contentType

它是發送到服務器的額數據的內容編碼類型,它的默認值是"appliction/x-www-form-urlencoded"。傳遞的服務器的數據通常以UTF-8編碼。

View Code

12. success(data,textStatus,XHR)

請求成功后的回調函數。參數由服務器返回,並會根據datatype參數進行參數處理。

 1 $.ajax({
 2   url:'', //請求的URL
 3   type : 'get', //請求方式,get或post
 4   data :{}, //請求所傳參數,json格式
 5    dataType:'json',//返回的數據格式
 6    success:function(data){ //請求成功的回調函數
 7      alert("成功");
 8   },
 9    error: function (data) {
10           console.info("error: " + data.responseText);
11    },
12   complete : function(XMLHttpRequest,status){ //請求完成后最終執行參數
13      if(status=='timeout'){//超時,status還有success,error等值的情況
14        ajaxTimeoutTest.abort();
15       alert("超時");
16     }
17   }
18  });
View Code

13. error (XHR,textStatus,errorThrown)

當請求失敗時調用這個方法。textStatus為錯誤信息,可用值為error,timeout,abort,parsererror。errorThrown為可選的要捕獲的異常對象。

$.ajax({
  url: '' //請求的URL
  type :  'get' //請求方式,get或post
  data :{},  //請求所傳參數,json格式
    dataType: 'json' , //返回的數據格式
    success: function (data){  //請求成功的回調函數
      alert( "成功" );
  },
   error: function (data) {//錯誤的回調函數
          console.info("error: " + data.responseText);
   },
  complete :  function (XMLHttpRequest,status){  //請求完成后最終執行參數
       if (status== 'timeout' ){ //超時,status還有success,error等值的情況
        ajaxTimeoutTest.abort();
      alert( "超時" );
    }
  }
  });

14. complete(jqXHR,textStatus)

請求完成后的回調函數,無論成功與否。textStatus為一個描述請求類型的字符串,它可以有以下值success,notmodified,error,timeout,abort,parsererror。

 1 $.ajax({
 2     type: "post",
 3     data: studentInfo,
 4     contentType: "application/json",
 5     url: "/Home/Submit",
 6     beforeSend: function () {
 7         // 禁用按鈕防止重復提交
 8         $("#submit").attr({ disabled: "disabled" });
 9     },
10     success: function (data) {
11         if (data == "Success") {
12             //清空輸入框
13             clearBox();
14         }
15     },
16     complete: function () {//請求之后執行的函數
17         $("#submit").removeAttr("disabled");
18     },
19     error: function (data) {
20         console.info("error: " + data.responseText);
21     }
22 });
View Code

15. contents

jQuery1.5添加。一個字符串或常規表達式的map,用來確定用何種方式處理jQuery的response。

 1 $.ajax({
 2         url: 'Home/Index',
 3         type: 'post',
 4         dataType: 'mytype',//自定義類型
 5         contents: {//當把一個自定義的dataType選項類型轉換為一個已知的類型的時候需要使用contents參數
 6             mytype: /mytype/
 7         },
 8         converters: {
 9             'text mycustomtype': true,
10             'mycustomtype json': function () {
11                 console.log('converters')
12             }
13         }
14     })
View Code

16. context

用來設置ajax回調函數的上下文。讓回調函數中的this指向這個對象。

1 $.ajax({
2         url: "url",
3         context: document.body
4     }).done(function() {                
5          $(this).addClass( "done" );        
6 });
7 this是documnet.body 
8 context參數作用 將回調里的this替換為context里對應的值。
View Code

17. converters

jQuery1.5添加。一組數據類型到數據類型的轉換。每一個轉換值都是一個返回了response轉換后的值的方法。

18. crossDomain

false表示同一域請求,true表示跨域請求。它可以使服務器端重定向到另外一個域。

19. dataFilter (data,type)

將ajax的返回值進行預處理的函數,data為返回值,teype為傳遞的datatype參數。

20. global

默認為true,觸發全局ajax事件。設置為false可以用來不觸發。可以用來控制不同的ajax事件。

21. ifModified

默認為false,僅在服務器數據改變時獲取數據,使用http包中的Last-Modified頭信息判斷。

22. isLocal

jQuery1.5.1添加。允許將當前環境識別為local,jquery默認是不會識別的。file,*-extension 和widget協議可以被識別為local。如果isLocal需要被修改,推薦使用$.ajaxSetup()方法。

23. jsonp

要求為String類型的參數,在一個jsonp請求中重寫回調函數的名字。該值用來替代在"callback=?"這種GET或POST請求中URL參數里的"callback"部分,例如{jsonp:'onJsonPLoad'}會導致將"onJsonPLoad=?"傳給服務器。

 1       $.ajax({
 2           url: "/count/storage/data?callback=storageSurvey",
 3           dataType: "jsonp",  //指定服務器返回的數據類型為jsonp  通常指的是跨域
 4           type: "GET", 
 5           async:true,  
 6           jsonp: "callback", ///指定參數名稱,默認為callback  
 7           jsonpCallback:"storageSurvey", //指定回調函數名稱
 8           success: function (data) {
 9                    storageSurvey_local(data);
10           },
11           error:function () {
12             alert("error");
13     }
View Code

24. jsonpCallback

為jsonp請求指定一個回調函數名。jquery會自動生成隨機函數名,用這個值可以修改此名。

 1 $.ajax({
 2  9             type : "get",
 3 10             async:false,
 4 11             url : "ajax.ashx",
 5 12             dataType : "jsonp",
 6 13             jsonp: "callbackparam",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(默認為:callback)
 7 14             jsonpCallback:"success_jsonpCallback",//自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名
 8 15             success : function(json){
 9 16                 alert(json);
10 17                 alert(json[0].name);
11 18             },
12 19             error:function(){
13 20                 alert('fail');
14 21             }
15 22         });
View Code

25. mimetype

jQuery1.5.1添加。可以用來覆蓋XHR中的mimetype。

26. password

要求為String類型的參數,用於響應HTTP訪問認證請求的密碼。

27. processData

要求為Boolean類型的參數,默認為true。默認情況下,發送的數據將被轉換為對象(從技術角度來講並非字符串)以配合默認內容類型"application/x-www-form-urlencoded"。如果要發送DOM樹信息或者其他不希望轉換的信息,請設置為false。

28. scriptCharset

只有當請求為jsonp或script,並且type為get時才會用於強制修改charset。

 1 $.ajax({ 
 2       url: testUrl, 
 3       dataType: 'jsonp', 
 4       type: 'post', 
 5       scriptCharset: 'utf-8'
 6     });
 7 使用scriptCharset即可解決問題,用contentType就不一定可以了。
 8 
 9 上面的解決方案是最完美的,另外網上的一般解決方式吧,是用contentType來處理的。
10 
11 $.ajax({ 
12 url: "ajax.aspx?a=memberlogin", 
13 type: "post", 
14 dataType: "json", 
15 contentType: "application/x-www-form-urlencoded; charset=utf-8", 
16 success: callback
17     });
View Code

29. statusCode

jQuery1.5添加。用來定義http的返回碼對應的處理函數。下面的例子定義了返回404后的處理方法。

1  $.ajax({ 
2    statusCode: { 
3    404: function() { 
4    alert("page not found"); 
5    } 
6    } 
7 }); 
View Code

30.username

用於響應http訪問認證要求為String類型的參數,用於響應HTTP訪問認證請求的用戶名。

31. xhr

默認在ie下是ActiveXObject而其他瀏覽器是XMLHttpRequest。用於重寫或提供一個增強的XMLHttpRequest對象。

32. xhrFields

jQuery1.5.1添加。它可以添加到原生xhr對象上的key/value對。舉個例子,你可以通過它來設置跨域的withCredentials為true。

1 $.ajax({   
2     url: a_cross_domain_url,   
3     xhrFields: {   
4     withCredentials: true   
5     }   
6 });  
7 支持withCredentials屬性的瀏覽器有Firefox 3.5+、Safari 4+和Chrome。IE10及更早版本都不支持
8 在jQuery1.5中,withCredentials這個屬性不在原生的xhr中,所以這個請求會被忽略到。若要測試這個例子,需要使用jQuery1.5.1。
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM