2009-02-17 75 views

回答

105

的文檔是在這裏:http://docs.jquery.com/Ajax/jQuery.ajax

但是,要總結,Ajax調用需要一堆選項。你正在尋找的是錯誤和成功。

你會這樣稱呼它:

$.ajax({ 
    url: 'mypage.html', 
    success: function(){ 
    alert('success'); 
    }, 
    error: function(){ 
    alert('failure'); 
    } 
}); 

我已經證明了成功和錯誤函數沒有參數,但它們可以接收參數。

錯誤函數可以帶三個參數:XMLHttpRequest,textStatus和errorThrown。

成功函數可以帶兩個參數:data和textStatus。您請求的頁面將位於數據參數中。

+27

請注意,取消通知的位置:http://bit.ly/nuiyyE。 從jQuery 1.8開始,成功,錯誤和完整的方法將被棄用,而不是使用:done,fail和always。 – hitautodestruct 2012-01-16 14:06:36

+13

如果我正確讀取,棄用通知*僅適用於返回的jqXHR對象上的success()等,但不適用於使用settings對象指定的值。所以'$ .ajax(url).success(...)`會被棄用,應該使用`$ .ajax(url).done(...)`而不是。 '$ .ajax(url,{success:...}'仍然可以,我沒有看到這些設置成員的個別描述的棄用聲明。 – 2012-10-31 19:36:50

+1

其中一個答案記錄了@hitautodestruct提到的內容。 – MrBoJangles 2013-02-05 20:34:33

43

如果您需要失敗函數,則不能使用$ .get或$ .post函數;你將需要直接調用$ .ajax函數。你傳遞一個可以有「成功」和「錯誤」回調的選項對象。

取而代之的是:

$.post("/post/url.php", parameters, successFunction); 

你這樣做:

$.ajax({ 
    url: "/post/url.php", 
    type: "POST", 
    data: parameters, 
    success: successFunction, 
    error: errorFunction 
}); 

有許多可用的過其他選項。 The documentation列出了所有可用的選項。

2

我在想,爲什麼他們沒有jQuery中本身提供,所以我做了jQuery的文件中的一些變化,,,這裏有改變的代碼塊:

原代碼塊:

post: function(url, data, callback, type) { 
    // shift arguments if data argument was omited 
    if (jQuery.isFunction(data)) { 
     type = type || callback; 
     callback = data; 
     data = {}; 
    } 

    return jQuery.ajax({ 
     type: "POST", 
     url: url, 
     data: data, 
     success: callback, 
     dataType: type 
    }); 

更改代碼塊:

 post: function (url, data, callback, failcallback, type) { 
     if (type === undefined || type === null) { 
      if (!jQuery.isFunction(failcallback)) { 
      type=failcallback 
     } 
     else if (!jQuery.isFunction(callback)) { 
      type = callback 
     } 
     } 
     if (jQuery.isFunction(data) && jQuery.isFunction(callback)) { 
      failcallback = callback; 

     } 
     // shift arguments if data argument was omited 
     if (jQuery.isFunction(data)) { 
      type = type || callback; 
      callback = data; 
      data = {}; 

     } 


     return jQuery.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      success: callback, 
      error:failcallback, 
      dataType: type 
     }); 
    }, 

這應該會幫助那個試圖捕獲jQuery中$.Post錯誤的人。

更新時間: 或者有另一種方式來做到這一點的是:使用jQuery 1.8及以上

$.post(url,{},function(res){ 
     //To do write if call is successful 
    }).error(function(p1,p2,p3){ 
      //To do Write if call is failed 
      }); 
28

,應使用以下命令:

var request = $.ajax({ 
    type: 'POST', 
    url: 'mmm.php', 
    data: { abc: "abcdefghijklmnopqrstuvwxyz" } }) 
    .done(function(data) { alert("success"+data.slice(0, 100)); }) 
    .fail(function() { alert("error"); }) 
    .always(function() { alert("complete"); }); 

簽出的文檔作爲@hitautodestruct陳述。

-1

這種風格也有可能:

$.get("mypage.html") 
    .done(function(result){ 
     alert("done. read "+result.length+" characters."); 
    }) 
    .fail(function(jqXHR, textStatus, errorThrown){ 
     alert("fail. status: "+textStatus); 
    })