JQuery中$.ajax()方法參數詳解 及 async屬性說明


 

url: 要求為String類型的參數,(默認為當前頁地址)發送請求的地址。

type: 要求為String類型的參數,請求方式(post或get)默認為get。注意其他http請求方法,例如put和

delete也可以使用,但僅部分瀏覽器支持。

timeout: 要求為Number類型的參數,設置請求超時時間(毫秒)。此設置將覆蓋$.ajaxSetup()方法的全局設

置。

async:要求為Boolean類型的參數,默認設置為true,所有請求均為異步請求。

如果需要發送同步請求,請將此選項設置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等

待請求完成才可以執行。

cache:要求為Boolean類型的參數,默認為true(當dataType為script時,默認為false)。

設置為false將不會從瀏覽器緩存中加載請求信息。

data: 要求為Object或String類型的參數,發送到服務器的數據。如果已經不是字符串,將自動轉換為字符串格

式。get請求中將附加在url后。防止這種自動轉換,可以查看processData選項。對象必須為key/value格

式,例如{foo1:"bar1",foo2:"bar2"}轉換為&foo1=bar1&foo2=bar2。如果是數組,JQuery將自動為不同

值對應同一個名稱。例如{foo:["bar1","bar2"]}轉換為&foo=bar1&foo=bar2。

dataType: 要求為String類型的參數,預期服務器返回的數據類型。如果不指定,JQuery將自動根據http包mime

信息返回responseXML或responseText,並作為回調函數參數傳遞。

可用的類型如下:

xml:返回XML文檔,可用JQuery處理。

html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。

script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求

時(不在同一個域下),所有post請求都將轉為get請求。

json:返回JSON數據。

jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換后一個

“?”為正確的函數名,以執行回調函數。

text:返回純文本字符串。

beforeSend:要求為Function類型的參數,發送請求前可以修改XMLHttpRequest對象的函數,例如添加自定義

HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求。XMLHttpRequest對象是惟一的參

數。

function(XMLHttpRequest){

this; //調用本次ajax請求時傳遞的options參數

}

complete:要求為Function類型的參數,請求完成后調用的回調函數(請求成功或失敗時均調用)。

參數:XMLHttpRequest對象和一個描述成功請求類型的字符串。

function(XMLHttpRequest, textStatus){

this; //調用本次ajax請求時傳遞的options參數

}

success:要求為Function類型的參數,請求成功后調用的回調函數,有兩個參數。

(1)由服務器返回,並根據dataType參數進行處理后的數據。

(2)描述狀態的字符串。

function(data, textStatus){

//data可能是xmlDoc、jsonObj、html、text等等

this; //調用本次ajax請求時傳遞的options參數

error:要求為Function類型的參數,請求失敗時被調用的函數。該函數有3個參數,即XMLHttpRequest對象、錯

誤信息、捕獲的錯誤對象(可選)。

ajax事件函數如下:

function(XMLHttpRequest, textStatus, errorThrown){

//通常情況下textStatus和errorThrown只有其中一個包含信息

this; //調用本次ajax請求時傳遞的options參數

}

contentType:要求為String類型的參數,當發送信息至服務器時,內容編碼類型默認

為"application/x-www-form-urlencoded"。該默認值適合大多數應用場合。

dataFilter:要求為Function類型的參數,給Ajax返回的原始數據進行預處理的函數。

提供data和type兩個參數。data是Ajax返回的原始數據,type是調用jQuery.ajax時提供的

dataType參數。函數返回的值將由jQuery進一步處理。

function(data, type){

//返回處理后的數據

return data;

}

global:要求為Boolean類型的參數,默認為true。表示是否觸發全局ajax事件。設置為false將不會觸發全局

ajax事件,ajaxStart或ajaxStop可用於控制各種ajax事件。

ifModified:要求為Boolean類型的參數,默認為false。僅在服務器數據改變時獲取新數據。

服務器數據改變判斷的依據是Last-Modified頭信息。默認值是false,即忽略頭信息。

jsonp:要求為String類型的參數,在一個jsonp請求中重寫回調函數的名字。

該值用來替代在"callback=?"這種GET或POST請求中URL參數里的"callback"部分,例如

{jsonp:'onJsonPLoad'}會導致將"onJsonPLoad=?"傳給服務器。

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

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

processData:要求為Boolean類型的參數,默認為true。默認情況下,發送的數據將被轉換為對象(從技術角度

來講並非字符串)以配合默認內容類型"application/x-www-form-urlencoded"。如果要發送DOM

樹信息或者其他不希望轉換的信息,請設置為false。

scriptCharset:要求為String類型的參數,只有當請求時dataType為"jsonp"或者"script",並且type是GET時

才會用於強制修改字符集(charset)。通常在本地和遠程的內容編碼不同時使用。

 

案例代碼:

復制代碼
$(function(){

$('#send').click(function(){

$.ajax({

type: "GET",

url: "test.json",

data: {username:$("#username").val(), content:$("#content").val()},

dataType: "json",

success: function(data){

$('#resText').empty(); //清空resText里面的所有內容

var html = '';

$.each(data, function(commentIndex, comment){

html += '<div class="comment"><h6>' + comment['username']

+ ':</h6><p class="para"' + comment['content']

+ '</p></div>';

});

$('#resText').html(html);

}

});

});

});
復制代碼

 

 

順便說一下$.each()函數:

$.each()函數不同於JQuery對象的each()方法,它是一個全局函數,不操作JQuery對象,而是以一個數組或者對象作為第1個參數,以一個回調函數作為第2個參數。回調函數擁有兩個參數:第1個為對象的成員或數組的索引,第2個為對應變量或內容。

轉載:http://www.cnblogs.com/sunxi/p/3849361.html

 

這里首先引用$.Ajax()中 async 和success的官方的解釋: 
async Boolean Default: true 
By default, all requests are sent asynchronous (e.g. this is set to true by default). If you need synchronous requests, set this option to false. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. 




success Function
A function to be called if the request succeeds. The function gets passed two arguments: The data returned from the server, formatted according to the 'dataType' parameter, and a string describing the status. This is an Ajax Event. 



在這里,async默認的設置值為true,這種情況為異步方式,就是說當ajax發送請求后,在等待server端返回的這個過程中,前台會繼續執行ajax塊后面的腳本,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個線程,ajax塊發出請求后一個線程和ajax塊后面的腳本(另一個線程)例: 

[javascript] view plaincopy 
$.ajax({   
           type:"POST",  
           url:"Venue.aspx?act=init",  
           dataType:"html",  
           success:function(result){   //function1()  
              f1();  
              f2();  
           }  
            failure:function (result) {   
               alert('Failed');   
           },  
   }  
  function2();  


在上例中,當ajax塊發出請求后,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2(),也就是說,在這個時候出現兩個線程,我們這里暫且說為function1() 和function2()。 

          當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求后,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢。 

          注:success中的方法f1(),f2()一般(即f1(),f2()不包括ajax塊時)不會異步執行,就是說f2的執行是以f1()為前提的。

 


免責聲明!

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



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