2012-04-23 11 views
3

私は私のコードでは、以下の機能があります。私はこれが近道であるjQueryのドキュメントから理解して何からjQueryのポスト機能を拡張し

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

を。私がしたいのは、成功すれば実行するいくつかの関数とエラーで実行する関数を持つことができるように変更することです。これは可能ですか?私が見ているのは誰ですか? .postに連鎖メソッド()など

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

なぜ '$ .ajax()'を使用できないのですか? – JJJ

+0

それは大丈夫でしょうが、私は実際に$ form.attr( 'action')、$ form.serializeArray()をajax呼び出しでどこに置くべきか分かりません。また、jQueryの方法は、それが可能であれば少し洗練されています。 –

+1

@MarieJ '$ .ajax()'はまだjQueryの方法です:)。 – kapa

答えて

2

実際にあなたが(.successを使用することができます).ERROR()と.complete() - $.post()含むall the jQuery ajax methods以来http://api.jquery.com/jQuery.post/

+2

"廃止予定通知:jqXHR.success()、jqXHR.error()およびjqXHR.complete()コールバックはjQuery 1.8では廃止予定です。代わりにfail()とjqXHR.always()を使用してください。 [source](http://api.jquery.com/jQuery.ajax/#jqXHR) –

+0

これは私には良いことです。ありがとう。しかし、どうすればこれらを実際にコード化できますか?コールバックは少し違うようです。私は、私が行う必要があることは、.failを追加し、その関数にエラーコードを入れるだけでいいと言っているのではないかと思いますか? .doneは常に成功を意味しますか? –

6

jqXHRオブジェクトを返すには、完全な$.ajax()呼び出しを使用しない場合は、Deferred object APIを使用できます。

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

私はこれについて読んでいますが、遅延オブジェクトAPIが意味することを理解できません。 –

+0

これはAPIドキュメントの**すべて**です。 http://api.jquery.com/category/deferred-object –