2012-04-23 34 views
3

我在我的代碼如下功能:擴大了jQuery後功能

 $.post($form.attr('action'), $form.serializeArray()) 
      .done(function (json) { 
      } 

從我從jQuery文檔這是一條捷徑理解。我想要做的就是改變它,讓我有一些執行成功的函數和一些錯誤執行的函數。這可能嗎?我看到的只有一個.done?

$.ajax({ 
    url: target, 
    dataType: 'json', 
    type: 'POST', 
    data: data, 
    success: function(data, textStatus, XMLHttpRequest) { }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { } 
+5

爲什麼你不能只用'$ .ajax()'? – JJJ 2012-04-23 13:37:37

+0

這將是好的,但我真的不明白在哪裏把$ form.attr('action'),$ form.serializeArray()放在ajax調用中。另外,如果只有這種可能,jQuery方法看起來更清潔一些。 – 2012-04-23 13:39:17

+1

@MarieJ'$ .ajax()'仍然是jQuery的方式:)。 – kapa 2012-04-23 13:40:04

回答

2

其實你可以使用.success().error()和.complete()作爲鏈接的方法。員額() - http://api.jquery.com/jQuery.post/

+2

「棄用聲明:在jQuery 1.8中將不推薦使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回調,要準備代碼以便最終刪除它們,請使用jqXHR.done(),jqXHR。失敗()和jqXHR.always()來代替。「 [來源](http://api.jquery.com/jQuery.ajax/#jqXHR) – 2012-04-23 13:39:35

+0

好吧,這對我來說是件好事。謝謝。但是,我如何實際編碼這些?看起來回調有點不同。我想我是正確的說我需要做的就是添加一個.fail並把該函數的錯誤代碼? .done是否意味着成功? – 2012-04-23 13:42:13

6

由於all the jQuery ajax methods,包括$.post(),返回jqXHR對象,可以使用Deferred object API如果您不想使用全面撥打電話$.ajax()

$.post(/* snip */).fail(function() {/* snip */}); 
+0

我閱讀了這篇文章,但無法理解延期對象API的含義。 – 2012-04-23 13:40:05

+0

它是API文檔中的** all **。 http://api.jquery.com/category/deferred-object – 2012-04-23 13:40:51