2011-10-03 7 views
6

エラーコールバックを含めるためにリファクタリングする必要がある一連の$.get()リクエストがあります。要求は形式のjQueryのjqXHRを理解する

$.get(url, 
     {}, 
     function(data) {//success, do work 
     //work 
     },'json');//or 'html' 

の形式です。jQuery APIによると、私は単純にjqHXRオブジェクトを追加します。だから、私の場合、私は

var jqxhr = $.get(url, 
      {}, 
      function(data) {//success, do work 
      //work 
      },'json').error(function() { alert("error"); });//or 'html' 

を行う必要があります信じている私はthe exampleにおける第二の成功コールバックの理由を理解していません。私はコールバックチェーンを設定することができると思います。私はエラーでエラーを実行し、成功すると成功するようにしたい。それで、これは正しいのですか?

+0

ページのどの例ですか?申し訳ありませんが、私はあなたが参照しているものを見つけることができませんでした。 –

+0

は3番目のコードサンプルのようです。 –

+0

ページを見ると、「The jqXHR Object」というセクションがあります。そのタイトルのすぐ下の例は、私が参照しているものです。 –

答えて

11

この例の2番目の成功コールバックは、この構文を使用して、success,error、およびcompleteイベントの複数のハンドラを持つことができることを示すためのものです。標準のjQuery .ajax()メソッドでは、これらのイベントのそれぞれに1つのハンドラしか割り当てることができません。私は複数のハンドラを必要とする例のぶっきらぼう考えることはできませんが、では

$.get('my_url.php') 
    .success(handlerOne) 
    .success(handlerTwo); 

代わりの

$.get('my_url.php', function(data, textStatus, jqXHR) { 
    handlerOne(data, textStatus, jqXHR); 
    handlerTwo(data, textStatus, jqXHR); 
}); 

使うには少しより明確かつ標準のjQueryイディオムのように見えるんあなたのケースでは、$.get()ステートメントを$.ajax()に変換する方が簡単で洗練されているかもしれません。 $.ajax()の構文はおそらくほとんどのjQueryプログラマーにとっては馴染みが深く、他の構文で使用できる特別な機能(複数ハンドラ、ポストリクエストハンドラの割り当て)が不要なので、$.ajax()を使用しない理由はありません:

$.ajax({ 
    url: url, 
    success: function(data) { 
     // success, do work 
    }, 
    error: function(data) { 
     // error, handle failure 
    }, 
    dataType:'json' 
}); 
+0

私は同意する、第二の選択肢はもっと意味がある。 –

+3

あなたのような明確な説明はまれであることがわかります。 APIのドキュメントと公式サイトは、その場所を持つすべてについて極端な詳細になる傾向がありますが、実用性を重視したり、推奨されるオプションをはっきりと強調したりしません。彼らはまた、十分な地面をカバーする例なしで抽象化を与える傾向があります。 – ahnbizcad

2

使用しているコードは問題ありません。 2番目の成功は、成功メソッドを定義できる別の場所です。一部の人は、$.get()に渡されたものの代わりにjqxhrの成功を使用し、他の人は、遅延オブジェクトの完了ハンドラを使用して同じ処理を行います。

+0

javascriptでさまざまなことをする方法と、代替構文での暗黙の沈黙は、私のためにjsを学習するのに最も混乱する部分です。 – ahnbizcad

+0

@gwhoそれに対する最良の解決策は、ソースに行くことです。多くの場合、ドキュメンテーションは単に不十分である場合があります。 –

+1

メタプログラミングのためにソースがさらに混乱していることがわかります。同じ理由でAPIの説明が混乱します。私は、細部を取り除き、重要で最も共通の中核となる重要な点を残しておくとよい明確な例が、情報を伝達する最も簡単に吸収される方法だと思います。それは私の持っているものです。ソースを読むことができれば、複数の構文について混同しないように、すでに十分に優れていることがわかります。 – ahnbizcad

関連する問題