最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery.ajax()

jQuery.ajax( url, [ settings ] ) 返回: jqXHR

描述: 執(zhí)行一個(gè)異步的HTTP(Ajax)的請(qǐng)求。

  • version added: 1.5jQuery.ajax( url, [ settings ] )

    url一個(gè)用來包含發(fā)送請(qǐng)求的URL字符串。

    settings一個(gè)以"{鍵:值}"組成的AJAX 請(qǐng)求設(shè)置。所有選項(xiàng)都是可選的。可以使用$.ajaxSetup()設(shè)置任何默認(rèn)參數(shù)???a href="#jQuery-ajax-settings">jQuery.ajax( settings )下所有設(shè)置的完整列表。

  • version added: 1.0jQuery.ajax( settings )

    settings一個(gè)以"{鍵:值}"組成的AJAX 請(qǐng)求設(shè)置。所有選項(xiàng)都是可選的??梢允褂?a href="#p=jQuery.ajaxSetup">$.ajaxSetup()設(shè)置任何默認(rèn)參數(shù)。

    acceptsMap
    默認(rèn): 取決于數(shù)據(jù)類型

    內(nèi)容類型發(fā)送請(qǐng)求頭,告訴服務(wù)器什么樣的響應(yīng)會(huì)接受返回。如果accepts設(shè)置需要修改,推薦在$.ajaxSetup()方法中做一次。

    asyncBoolean
    默認(rèn): true

    默認(rèn)設(shè)置下,所有請(qǐng)求均為異步請(qǐng)求(也就是說這是默認(rèn)設(shè)置為true)。如果需要發(fā)送同步請(qǐng)求,請(qǐng)將此選項(xiàng)設(shè)置為 false??缬蛘?qǐng)求和dataType: "jsonp"請(qǐng)求不支持同步操作。注意,同步請(qǐng)求將鎖住瀏覽器,用戶其它操作必須等待請(qǐng)求完成才可以執(zhí)行。

    beforeSend(jqXHR, settings)Function

    發(fā)送請(qǐng)求前可修改 jqXHR(在jQuery 1.4.x的中,XMLHttpRequest) 對(duì)象的函數(shù),如添加自定義 HTTP 頭等。該jqXHR和設(shè)置作為參數(shù)傳遞的。這是一個(gè)Ajax事件 。beforeSend行數(shù)返回的false將取消該請(qǐng)求。在jQuery 1.5, beforeSend選項(xiàng)將被訪問,不管請(qǐng)求的類型。

    cacheBoolean
    默認(rèn): true, dataType為"script"和"jsonp"時(shí)默認(rèn)為false

    如果設(shè)置為 false ,瀏覽器將不緩存此頁面。

    complete(jqXHR, textStatus)Function, Array

    請(qǐng)求完成后回調(diào)函數(shù) (請(qǐng)求成功或失敗之后均調(diào)用)。這個(gè)回調(diào)函數(shù)得到2個(gè)參數(shù): jqXHR (in jQuery 1.4.x, XMLHTTPRequest) 對(duì)象和一個(gè)描述成功請(qǐng)求類型的字符串("success",?"notmodified",?"error","timeout", or?"parsererror") 。在jQuery 1.5, complete設(shè)置可以接受一個(gè)函數(shù)的數(shù)組。每個(gè)函數(shù)將被依次調(diào)用。這是一個(gè)Ajax事件 。

    contents(added 1.5)Map

    一個(gè)以"{字符串:正則表達(dá)式}"配對(duì)的對(duì)象,用來確定jQuery將如何解析響應(yīng),給定其內(nèi)容類型。

    contentTypeString
    默認(rèn): 'application/x-www-form-urlencoded'

    發(fā)送信息至服務(wù)器時(shí)內(nèi)容編碼類型。默認(rèn)值是"application/x-www-form-urlencoded",適合大多數(shù)情況。如果你明確地傳遞了一個(gè)content-type給 $.ajax() 那么他必定會(huì)發(fā)送給服務(wù)器(即使沒有數(shù)據(jù)要發(fā)送)。數(shù)據(jù)將總是使用UTF-8字符集傳遞給服務(wù)器;你必須譯碼這適當(dāng)?shù)脑诜?wù)器端。

    contextObject

    這個(gè)對(duì)象用于設(shè)置Ajax相關(guān)回調(diào)函數(shù)的上下文。也就是說,讓回調(diào)函數(shù)內(nèi)this指向這個(gè)對(duì)象(如果不設(shè)定這個(gè)參數(shù),那么this就指向調(diào)用本次AJAX請(qǐng)求時(shí)傳遞的options參數(shù))。比如指定一個(gè)DOM元素作為context參數(shù),這樣就設(shè)置了success回調(diào)函數(shù)的上下文為這個(gè)DOM元素。就像這樣:

    $.ajax({
      url: "test.html",
      context: document.body,
      success: function(){
        $(this).addClass("done");
      }
    });
    converters(1.5新增)Map
    默認(rèn): {"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}

    一個(gè)數(shù)據(jù)類型對(duì)數(shù)據(jù)類型轉(zhuǎn)換器的對(duì)象。每個(gè)轉(zhuǎn)換器的值是一個(gè)函數(shù),返回響應(yīng)的轉(zhuǎn)化值

    crossDomain(1.5新增)
    默認(rèn): 同域請(qǐng)求為false, 跨域請(qǐng)求為true

    如果你想強(qiáng)制跨域請(qǐng)求(如JSONP形式)同一域,設(shè)置crossDomain為true。這使得例如,服務(wù)器端重定向到另一個(gè)域

    dataObject, String

    發(fā)送到服務(wù)器的數(shù)據(jù)。將自動(dòng)轉(zhuǎn)換為請(qǐng)求字符串格式。GET 請(qǐng)求中將附加在 URL 后。查看 processData 選項(xiàng)說明以禁止此自動(dòng)轉(zhuǎn)換。必須為"{鍵:值}"格式。如果為數(shù)組,jQuery 將自動(dòng)為不同值對(duì)應(yīng)同一個(gè)名稱。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 '&foo=bar1&foo=bar2'。 如果值是一個(gè)數(shù)組( Array ), jQuery將在 多個(gè)連續(xù)的值具有相同的鍵值的基礎(chǔ)上建立的傳統(tǒng)設(shè)置(下述)。

    dataFilter(data, type)Function

    一個(gè)函數(shù)被用來處理XMLHttpRequest的原始響應(yīng)數(shù)據(jù)。這是一個(gè)預(yù)過濾功能,凈化響應(yīng)。您應(yīng)該返回安全數(shù)據(jù)。提供data和type兩個(gè)參數(shù):data是Ajax返回的原始數(shù)據(jù),type是調(diào)用jQuery.ajax時(shí)提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進(jìn)一步處理。

    dataTypeString
    默認(rèn): Intelligent Guess (xml, json, script, or html)

    預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動(dòng)根據(jù) HTTP 包 MIME 信息來智能判斷,比如XML MIME類型就被識(shí)別為XML。在1.4中,JSON就會(huì)生成一個(gè)JavaScript對(duì)象,而script則會(huì)執(zhí)行這個(gè)腳本。隨后服務(wù)器端返回的數(shù)據(jù)會(huì)根據(jù)這個(gè)值解析后,傳遞給回調(diào)函數(shù)??捎弥?

    • "xml": 返回 XML 文檔,可用 jQuery 處理。.
    • "html": 返回純文本 HTML 信息;包含的script標(biāo)簽會(huì)在插入dom時(shí)執(zhí)行。
    • "script": 評(píng)估為JavaScript并返回純文本響應(yīng)。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。'''注意:'''在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。(因?yàn)閷⑹褂肈OM的script標(biāo)簽來加載)
    • "json": 評(píng)估為JSON響應(yīng),并返回一個(gè)JavaScript對(duì)象。1.4中,JSON就會(huì)生成一個(gè)JavaScript對(duì)象,而script則會(huì)執(zhí)行這個(gè)腳本。(見json.org的更多信息,正確的JSON格式。)
    • "jsonp": JSONP 格式。使用JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
    • "text": 返回純文本字符串。
    • 多個(gè)空格分割的值:As of jQuery 1.5, jQuery可以從Content - Type頭收到并轉(zhuǎn)換一個(gè)您需要的數(shù)據(jù)類型。例如,如果你想要一個(gè)文本響應(yīng)為XML處理,使用"text xml"數(shù)據(jù)類型。您也可以將一個(gè)JSONP的請(qǐng)求,以文本形式接受,并用jQuery以XML解析: "jsonp text xml"。同樣地可以使用"jsonp xml"簡(jiǎn)寫,將首先嘗試從JSONP形式轉(zhuǎn)換為XML,做不到這一點(diǎn),并沒有從文本,從JSONP形式轉(zhuǎn)換為文本,然后到XML。
    error(jqXHR, textStatus, errorThrown)Function

    請(qǐng)求失敗時(shí)調(diào)用此函數(shù)。有以下三個(gè)參數(shù):jqXHR (在 jQuery 1.4.x中, XMLHttpRequest) 對(duì)象、描述發(fā)生的錯(cuò)誤類型的一個(gè)字符串和捕獲的異常對(duì)象。如果發(fā)生了錯(cuò)誤,錯(cuò)誤信息(第二個(gè)參數(shù))除了得到null之外,還可能是"timeout", "error", "abort""parsererror"。這是一個(gè) Ajax Event在jQuery 1.5, 在error設(shè)置可以接受函數(shù)組成的數(shù)組。每個(gè)函數(shù)將被依次調(diào)用。 注意:此處理程序不被跨域腳本和JSONP形式的請(qǐng)求調(diào)用。

    globalBoolean
    默認(rèn): true

    無論怎么樣這個(gè)請(qǐng)求將觸發(fā)全局AJAX事件處理程序。默認(rèn)是true 。設(shè)置為 false 將不會(huì)觸發(fā)全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的。這可以用來控制各種Ajax Events.

    headers(1.5新增)Map
    Default: {}

    一個(gè)額外的"{鍵:值}"對(duì)映射到請(qǐng)求一起發(fā)送。此設(shè)置被設(shè)置之前beforeSend函數(shù)被調(diào)用;因此,消息頭中的值設(shè)置可以在覆蓋beforeSend函數(shù)范圍內(nèi)的任何設(shè)置。

    ifModifiedBoolean
    默認(rèn): false

    僅在服務(wù)器數(shù)據(jù)改變時(shí)獲取新數(shù)據(jù)。使用 HTTP 包 Last-Modified 頭信息判斷。在jQuery 1.4中,他也會(huì)檢查服務(wù)器指定的'etag'來確定數(shù)據(jù)沒有被修改過。

    isLocal(added 1.5.1)Boolean
    默認(rèn): 取決于當(dāng)前的位置協(xié)議

    允許當(dāng)前環(huán)境被認(rèn)定為“本地”,(如文件系統(tǒng)),即使jQuery默認(rèn)情況下不會(huì)承認(rèn)它。以下協(xié)議目前公認(rèn)為本地:file, *-extension, and widget。如果isLocal設(shè)置需要修改,建議在$.ajaxSetup()方法中這樣做一次。

    jsonpString

    在一個(gè)jsonp請(qǐng)求中重寫回調(diào)函數(shù)的名字。這個(gè)值用來替代在"callback=?"這種GET或POST請(qǐng)求中URL參數(shù)里的"callback"部分,比如{jsonp:'onJsonPLoad'}會(huì)導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。在jQuery 1.5,,設(shè)置jsonp選項(xiàng)為false阻止了jQuery從加入"?callback"字符串的URL或試圖使用"=?"轉(zhuǎn)換。在這種情況下,你也應(yīng)該明確設(shè)置jsonpCallback設(shè)置。例如, { jsonp: false, jsonpCallback: "callbackName" }

    jsonpCallbackString, Function

    為jsonp請(qǐng)求指定一個(gè)回調(diào)函數(shù)名。這個(gè)值將用來取代jQuery自動(dòng)生成的隨機(jī)函數(shù)名。這主要用來讓jQuery生成度獨(dú)特的函數(shù)名,這樣管理請(qǐng)求更容易,也能方便地提供回調(diào)函數(shù)和錯(cuò)誤處理。你也可以在想讓瀏覽器緩存GET請(qǐng)求的時(shí)候,指定這個(gè)回調(diào)函數(shù)名。在jQuery 1.5,你也可以使用一個(gè)函數(shù)值該設(shè)置,在這種情況下jsonpCallback的值設(shè)置到該函數(shù)的返回值。

    mimeType(added 1.5.1)String

    一個(gè)mime類型用來覆蓋XHR的 MIME類型。

    passwordString

    用于響應(yīng)HTTP訪問認(rèn)證請(qǐng)求的密碼

    processDataBoolean
    默認(rèn): true

    默認(rèn)情況下,通過data選項(xiàng)傳遞進(jìn)來的數(shù)據(jù),如果是一個(gè)對(duì)象(技術(shù)上講只要不是字符串),都會(huì)處理轉(zhuǎn)化成一個(gè)查詢字符串,以配合默認(rèn)內(nèi)容類型 "application/x-www-form-urlencoded"。如果要發(fā)送 DOM 樹信息或其它不希望轉(zhuǎn)換的信息,請(qǐng)?jiān)O(shè)置為 false

    scriptCharsetString

    只有當(dāng)請(qǐng)求時(shí)dataType為"jsonp"或"script",并且type是"GET"才會(huì)用于強(qiáng)制修改charset。通常只在本地和遠(yuǎn)程的內(nèi)容編碼不同時(shí)使用。

    statusCode(1.5新增)Map
    默認(rèn): {}

    一組數(shù)值的HTTP代碼和函數(shù)對(duì)象,當(dāng)響應(yīng)時(shí)調(diào)用了相應(yīng)的代碼。例如,如果響應(yīng)狀態(tài)是404,將觸發(fā)以下警報(bào):

    $.ajax({
      statusCode: {404: function() {
        alert('page not found');
      }
    });

    如果請(qǐng)求成功,狀態(tài)代碼函數(shù)作為回調(diào)的成功相同的參數(shù);如果在一個(gè)錯(cuò)誤的結(jié)果,他們采取了相同的參數(shù)error回調(diào)。

    success(data, textStatus, jqXHR)Function, Array

    請(qǐng)求成功后的回調(diào)函數(shù)。這個(gè)函數(shù)傳遞3個(gè)參數(shù):從服務(wù)器返回的數(shù)據(jù),并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù),一個(gè)描述狀態(tài)的字符串;還有 jqXHR(在jQuery 1.4.x的中,XMLHttpRequest) 對(duì)象 。在jQuery 1.5, 成功設(shè)置可以接受一個(gè)函數(shù)數(shù)組。每個(gè)函數(shù)將被依次調(diào)用。這是一個(gè) Ajax Event.

    timeoutNumber

    設(shè)置請(qǐng)求超時(shí)時(shí)間(毫秒)。如果一個(gè)設(shè)置有$.ajaxSetup(),此設(shè)置將覆蓋全局設(shè)置。例如,你可以使用這個(gè)屬性來提供一個(gè)單一的請(qǐng)求比所有你所設(shè)置時(shí)間在一秒鐘內(nèi)的其他要求更長(zhǎng)的超時(shí)。見$.ajaxSetup()全局超時(shí)。

    traditionalBoolean

    如果你想要用傳統(tǒng)的方式來序列化數(shù)據(jù),那么就設(shè)置為true。請(qǐng)參考工具分類下面的jQuery.param 方法.

    typeString
    默認(rèn): 'GET'

    請(qǐng)求方式 ("POST" 或 "GET"), 默認(rèn)為 "GET"。注意:其它 HTTP 請(qǐng)求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。

    urlString
    默認(rèn): 當(dāng)前地址

    發(fā)送請(qǐng)求的地址。

    usernameString

    于響應(yīng)HTTP訪問認(rèn)證請(qǐng)求的用戶名

    xhrFunction
    默認(rèn) 當(dāng)可用的ActiveXObject(IE)中,否則為XMLHttpRequest

    回調(diào)創(chuàng)建XMLHttpRequest對(duì)象。當(dāng)可用時(shí)默認(rèn)為ActiveXObject(IE)中,否則為XMLHttpRequest。提供覆蓋你自己的執(zhí)行的XMLHttpRequest或增強(qiáng)工廠。

    xhrFields(added 1.5.1)Map

    一對(duì)“文件名-文件值”在本機(jī)設(shè)置XHR對(duì)象。例如,如果需要的話,你可以用它來設(shè)置withCredentialstrue的跨域請(qǐng)求。

$.ajax()函數(shù)所有的基礎(chǔ)jQuery的Ajax請(qǐng)求發(fā)送。它往往不是必須的,直接調(diào)用這個(gè)函數(shù),幾個(gè)高層次的替代品如$.get().load()可用,更容易使用,如果不常見的選項(xiàng)是必需的,不過, $.ajax()可以使用更靈活。

在簡(jiǎn)單地說, $.ajax()函數(shù)可以不帶參數(shù)調(diào)用:

$.ajax();

注意: 所有的選項(xiàng)都可以通過$.ajaxSetup() 函數(shù)來全局設(shè)置

這個(gè)例子中,不使用選項(xiàng),加載當(dāng)前頁面的內(nèi)容,但其結(jié)果沒有。若要使用結(jié)果,我們可以實(shí)現(xiàn)的回調(diào)功能之一。

jqXHR 對(duì)象

該jQuery的XMLHttpRequest(jqXHR)對(duì)象返回$.ajax() 在jQuery 1.5是一個(gè)對(duì)象的超集瀏覽器的原生的XMLHttpRequest。例如,它包含responseTextresponseXML性能,以及一個(gè)getResponseHeader()方法。當(dāng)傳輸機(jī)制是XMLHttpRequest以外的東西(例如,一個(gè)一個(gè)JSONP請(qǐng)求腳本標(biāo)簽)的jqXHR對(duì)象盡可能的模擬原生的XHR功能。

在jQuery 1.5.1, 在jqXHR對(duì)象還包含了overrideMimeType方法。

$.ajax()返回的jqXHR對(duì)象 實(shí)現(xiàn)約定的接口,給他們的所有屬性,方法,和約定的行為(見Deferred object獲取更多信息)。為了方便和一致性$.ajax()回調(diào)函數(shù)名稱中使用。jqXHR也提供.error() .success().complete()方法。這些方法當(dāng)$.ajax()請(qǐng)求終止時(shí)需要一個(gè)函數(shù)參數(shù)調(diào)用,這個(gè)函數(shù)接收$.ajax()回調(diào)函數(shù)名相同的參數(shù)。在jQuery 1.5這允許你指定一個(gè)請(qǐng)求的多個(gè)回調(diào),甚至可能分配請(qǐng)求后已完成回調(diào)。(如果請(qǐng)求已經(jīng)完成,回調(diào)立即觸發(fā)。)

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

為了向后兼容XMLHttpRequest ,一jqXHR對(duì)象將公開下列屬性和方法:

  • readyState
  • status
  • statusText
  • responseXML and/or responseText 當(dāng)?shù)讓拥恼?qǐng)求分別作出XML和/或文本響應(yīng)
  • setRequestHeader(name, value) 這背離了換上了新一舊的價(jià)值,而不是串聯(lián)的新值與舊標(biāo)準(zhǔn)
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()

假如沒有onreadystatechange機(jī)制,不管怎樣 由于success , error , completestatusCode覆蓋所有可能的要求。

回調(diào)函數(shù)

如果要處理$.ajax()得到的數(shù)據(jù),則需要使用回調(diào)函數(shù)。beforeSend、error、dataFilter、success、complete。

在jQuery 1.5, error , success ,和complete回調(diào)鉤子先入先出隊(duì)列管理。這意味著你可以為每個(gè)掛鉤分配多個(gè)回調(diào)。見Deferred object methods ,這是實(shí)現(xiàn)內(nèi)部的$.ajax()回調(diào)掛鉤。

this回調(diào)是在所有參考對(duì)象在context選項(xiàng)傳遞給$.ajax在設(shè)置;如果context沒有指定, this是他們自己的Ajax設(shè)置參考。

某些類型Ajax的請(qǐng)求,如JSONP形式和跨域的GET請(qǐng)求,請(qǐng)不要使用XHR;在這些情況下XMLHttpRequesttextStatus參數(shù)傳遞給回調(diào)是undefined

這里有$.ajax()提供的鉤子回調(diào) :

  1. beforeSend 在發(fā)送請(qǐng)求之前調(diào)用,它接收jqXHR對(duì)象和settings作為參數(shù)對(duì)象。
  2. error 在請(qǐng)求出錯(cuò)時(shí)調(diào)用。如果請(qǐng)求失敗,在它們的順序依次登記。他們收到jqXHR ,字符串表示的錯(cuò)誤類型,如果適用的異常對(duì)象。一些內(nèi)置的錯(cuò)誤,將提供作為例外對(duì)象的字符串: "abort", "timeout", "No Transport"。
  3. dataFilter 在請(qǐng)求成功之后調(diào)用。傳入返回的數(shù)據(jù)以及dataType參數(shù)的值。并且必須返回新的數(shù)據(jù)(可能是處理過的)傳遞給success回調(diào)函數(shù)。
  4. success 當(dāng)請(qǐng)求之后調(diào)用。傳入返回后的數(shù)據(jù),以及包含成功代碼的字符串。他們收到返回的數(shù)據(jù),一個(gè)包含成功的代碼和jqXHR對(duì)象。
  5. complete 它們的順序依次登記回調(diào),請(qǐng)求完成時(shí),無論是在失敗或成功。他們收到jqXHR對(duì)象,以及一個(gè)包含成功或錯(cuò)誤代碼。

For example, 通過使用返回的HTML,我們可以實(shí)現(xiàn)一個(gè)success事件處理器:

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

數(shù)據(jù)類型

$.ajax()函數(shù)依賴服務(wù)器提供的信息來處理返回的數(shù)據(jù)。如果服務(wù)器報(bào)告說返回的數(shù)據(jù)是XML,那么返回的結(jié)果就可以用普通的XML方法或者jQuery的選擇器來遍歷。如果見得到其他類型,比如HTML,則數(shù)據(jù)就以文本形式來對(duì)待。

通過dataType選項(xiàng)還可以指定其他不同數(shù)據(jù)處理方式。除了單純的XML,還可以指定 html、json、jsonp、script或者text。

其中,text和xml類型返回的數(shù)據(jù)不會(huì)經(jīng)過處理。這些數(shù)據(jù)僅僅是傳遞給處理程序的成功,無論是通過responseTextresponseXML所有的jqXHR對(duì)象。

注意:我們必須確保網(wǎng)頁服務(wù)器報(bào)告的MIME類型與我們選擇的dataType所匹配。比如說,XML的話,服務(wù)器端就必須聲明 text/xml 或者 application/xml 來獲得一致的結(jié)果。

如果指定為 html類型,任何內(nèi)嵌的JavaScript都會(huì)在HTML作為一個(gè)字符串返回之前執(zhí)行。類似的,指定script類型的話,也會(huì)先執(zhí)行服務(wù)器端生成JavaScript,然后再把腳本作為一個(gè)文本數(shù)據(jù)返回。

如果指定為json類型,則會(huì)把獲取到的數(shù)據(jù)作為一個(gè)JavaScript對(duì)象來解析,并且把構(gòu)建好的對(duì)象作為結(jié)果返回。為了實(shí)現(xiàn)這個(gè)目的,他首先嘗試使用jQuery.parseJSON()。如果瀏覽器不支持,則使用一個(gè)Function構(gòu)建。JSON數(shù)據(jù)是一種能很方便通過JavaScript解析的結(jié)構(gòu)化數(shù)據(jù)。如果獲取的數(shù)據(jù)文件存放在遠(yuǎn)程服務(wù)器上(域名不同,也就是跨域獲取數(shù)據(jù)),則需要使用jsonp類型。使用這種類型的話,會(huì)創(chuàng)建一個(gè)查詢字符串參數(shù) callback=? ,這個(gè)參數(shù)會(huì)加在請(qǐng)求的URL后面。服務(wù)器端應(yīng)當(dāng)在JSON數(shù)據(jù)前加上回調(diào)函數(shù)名,以便完成一個(gè)有效的JSONP請(qǐng)求。如果要指定回調(diào)函數(shù)的參數(shù)名來取代默認(rèn)的callback,可以通過設(shè)置$.ajax()的jsonp參數(shù)。

注意:JSONP是JSON格式的擴(kuò)展。他要求一些服務(wù)器端的代碼來檢測(cè)并處理查詢字符串參數(shù)。更多信息可以參閱original post detailing its use.

如果指定了script或者jsonp類型,那么當(dāng)從服務(wù)器接收到數(shù)據(jù)時(shí),實(shí)際上是用了<script>標(biāo)簽而不是XMLHttpRequest對(duì)象。這種情況下,$.ajax()不再返回一個(gè)XMLHttpRequest對(duì)象,并且也不會(huì)傳遞事件處理函數(shù),比如beforeSend。

發(fā)送數(shù)據(jù)到服務(wù)器

默認(rèn)情況下,Ajax請(qǐng)求使用GET方法。如果要使用POST方法,可以設(shè)定type參數(shù)值。這個(gè)選項(xiàng)也會(huì)影響data選項(xiàng)中的內(nèi)容如何發(fā)送到服務(wù)器。

data選項(xiàng)既可以包含一個(gè)查詢字符串,比如 key1=value1&key2=value2 ,也可以是一個(gè)映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,則數(shù)據(jù)再發(fā)送器會(huì)被轉(zhuǎn)換成查詢字符串。這個(gè)處理過程也可以通過設(shè)置processData選項(xiàng)為false來回避。如果我們希望發(fā)送一個(gè)XML對(duì)象給服務(wù)器時(shí),這種處理可能并不合適。并且在這種情況下,我們也應(yīng)當(dāng)改變contentType選項(xiàng)的值,用其他合適的MIME類型來取代默認(rèn)的 application/x-www-form-urlencoded 。

高級(jí)選項(xiàng)

global選項(xiàng)用于阻止響應(yīng)注冊(cè)的回調(diào)函數(shù),比如.ajaxSend,或者ajaxError,以及類似的方法。這在有些時(shí)候很有用,比如發(fā)送的請(qǐng)求非常頻繁且簡(jiǎn)短的時(shí)候,就可以在ajaxSend里禁用這個(gè)。更多關(guān)于這些方法的詳細(xì)信息,請(qǐng)參閱下面的內(nèi)容。

如果服務(wù)器需要HTTP認(rèn)證,可以使用用戶名和密碼可以通過username和password選項(xiàng)來設(shè)置。

Ajax請(qǐng)求是限時(shí)的,所以錯(cuò)誤警告被捕獲并處理后,可以用來提升用戶體驗(yàn)。請(qǐng)求超時(shí)這個(gè)參數(shù)通常就保留其默認(rèn)值,要不就通過jQuery.ajaxSetup來全局設(shè)定,很少為特定的請(qǐng)求重新設(shè)置timeout選項(xiàng)。

默認(rèn)情況下,請(qǐng)求總會(huì)被發(fā)出去,但瀏覽器有可能從他的緩存中調(diào)取數(shù)據(jù)。要禁止使用緩存的結(jié)果,可以設(shè)置cache參數(shù)為false。如果希望判斷數(shù)據(jù)自從上次請(qǐng)求后沒有更改過就報(bào)告出錯(cuò)的話,可以設(shè)置ifModified為true。

scriptCharset允許給<script>標(biāo)簽的請(qǐng)求設(shè)定一個(gè)特定的字符集,用于script或者jsonp類似的數(shù)據(jù)。當(dāng)腳本和頁面字符集不同時(shí),這特別好用。

Ajax的第一個(gè)字母是asynchronous的開頭字母,這意味著所有的操作都是并行的,完成的順序沒有前后關(guān)系。$.ajax()的async參數(shù)總是設(shè)置成true,這標(biāo)志著在請(qǐng)求開始后,其他代碼依然能夠執(zhí)行。強(qiáng)烈不建議把這個(gè)選項(xiàng)設(shè)置成false,這意味著所有的請(qǐng)求都不再是異步的了,這也會(huì)導(dǎo)致瀏覽器被鎖死。

$.ajax函數(shù)返回他創(chuàng)建的XMLHttpRequest對(duì)象。通常jQuery只在內(nèi)部處理并創(chuàng)建這個(gè)對(duì)象,但用戶也可以通過xhr選項(xiàng)來傳遞一個(gè)自己創(chuàng)建的xhr對(duì)象。返回的對(duì)象通常已經(jīng)被丟棄了,但依然提供一個(gè)底層接口來觀察和操控請(qǐng)求。比如說,調(diào)用對(duì)象上的.abort()可以在請(qǐng)求完成前掛起請(qǐng)求。

擴(kuò)展的Ajax

在jQuery 1.5,,jQuery的Ajax實(shí)現(xiàn)包括預(yù)過濾器,轉(zhuǎn)換器和傳輸,讓您擴(kuò)展了很大的靈活性Ajax。如需有關(guān)這些先進(jìn)功能的信息,請(qǐng)參閱Extending Ajax

其他注意事項(xiàng):

  • 由于瀏覽器的安全限制,大多數(shù)“Ajax”的要求,均采用同一起源的政策 ;該請(qǐng)求不能成功地檢索來自不同的域,子域或協(xié)議的數(shù)據(jù)。
  • Script和JSONP形式請(qǐng)求不受同源策略的限制。

Examples:

Example: 加載并執(zhí)行一個(gè) JS 文件。

$.ajax({
   type: "GET",
   url: "test.js",
   dataType: "script"
 });

Example: 保存數(shù)據(jù)到服務(wù)器,成功時(shí)顯示信息。

$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

Example: 裝入一個(gè) HTML 網(wǎng)頁最新版本。

$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});

Example: 同步加載數(shù)據(jù)。發(fā)送請(qǐng)求時(shí)鎖住瀏覽器。需要鎖定用戶交互操作時(shí)使用同步方式。

var html = $.ajax({
  url: "some.php",
  async: false
 }).responseText;

Example: 發(fā)送 XML 數(shù)據(jù)至服務(wù)器。設(shè)置 processData 選項(xiàng)為 false,防止自動(dòng)轉(zhuǎn)換數(shù)據(jù)格式。

var xmlDocument = [create xml document];
 $.ajax({
   url: "page.php",
   processData: false,
   data: xmlDocument,
   success: handleResponse
 });

Example: 作為發(fā)送數(shù)據(jù)到服務(wù)器的ID,保存一些數(shù)據(jù)到服務(wù)器,并通知用戶一旦它的完成。請(qǐng)注意,此用法 - 返回到一個(gè)變量的調(diào)用的結(jié)果 - 需要同步(阻塞)的要求! (異步:假)

bodyContent = $.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      async:false,
      success: function(msg){
         alert(msg);
      }
   }
).responseText;
jQuery 1.6 API 中文版腳本之家整理、修訂 (2011年6月)
桦南县| 繁峙县| 长兴县| 井研县| 仙游县| 乌拉特后旗| 江川县| 望谟县| 海安县| 阳江市| 尼玛县| 泊头市| 桦南县| 台东县| 措勤县| 南宁市| 米林县| 莱芜市| 泗水县| 库伦旗| 奉化市| 松阳县| 永春县| 高雄县| 岳阳县| 临汾市| 庆阳市| 仪陇县| 东海县| 溧阳市| 灵石县| 霍州市| 十堰市| 两当县| 抚松县| 镇康县| 耒阳市| 淳安县| 丹巴县| 新昌县| 阳山县|