2016-06-29 15 views
0

で行わ()メソッドの利点が何であるか:

$.ajax({ 
    url: '@Url.Action("_sampleMethod","Sample")', 
    type: 'GET', 
    cache: false, 
}).done(function (result) { 
    // ... 
}); 
+0

どちらも独自のものであり、将来は削除される可能性がありますので、どちらも使用しないでください。代わりにjQueryがサポートしているES6の約束の標準 '.then()'を使用してください。 – jfriend00

+0

は、その両方の目的をカバーします()。 – SandaruwanH

+0

はい、 '.then()'は必要なものだけです。それはES6の約束の標準です。 – jfriend00

答えて

2

done()メソッドは、一連の複数のAjax呼び出しがあり、コールバックを完了するために他のものが待機する場合に役立ちます。そのため、AjaxコールAが完了した後で、ポストAjaxコードをdone()に実行します。 success()は、主にあなたのニーズに応じてレスポンスを処理するのに役立つAjaxコールの一部です。

+0

ありがとう。とった :) – SandaruwanH

0

あなたのコードがうまくフォーマットされていないが、私はとにかくそれに打撃を与えるだろう。

done()は、ajaxリクエストが成功したかどうかに関係なく、関数をトリガーします。

success()は、ajaxリクエストが成功した場合にのみ関数をトリガします。

+0

ありがとうございます。 :)それは – SandaruwanH

0

成功はajax呼び出しのオプションとして定義されたjQueryの成功コールバックの従来の名前です。それが成功

$.ajax({ 
    url: '/', 
    success: function(data) {} 
}); 

済例

$.ajax({url: '/'}).done(function(data) {}); 
の繰延例に呼び出すことができるようしかし、$ .Deferredsと行われ、より洗練されたコールバックの実装では、成功コールバックを実装するための好ましい方法であるため、

良い点は、$ .ajaxの戻り値は、アプリケーションのどこにでもバインドできる遅延された約束です。だから、あなたはいくつかの異なる場所からこのajax呼び出しをしたいとしましょう。このajax呼び出しを行う関数のオプションとしてsuccess関数を渡すのではなく、関数に$ .ajax自体を返し、コールバックをdone、fail、thenなどでバインドすることができます。常に要求が成功するか失敗するかに関わらず実行されるコールバックです。 doneは成功した場合にのみ起動されます。

1

successは、AJAX呼び出しが成功した場合のみ、つまり最終的にHTTP 200ステータスを返します。失敗した場合はerror、失敗した場合はcompleteを返します。 ($.ajaxによって返さ)jqXHRオブジェクトsuccessにjQueryの1.8で

は、常にでfailcompletedoneerrorで置換されています。

ただし、現在の構文でAJAXリクエストを初期化できる必要があります。したがって、これらは同様のことを行う:

// set success action before making the request 
$.ajax({ 
    url: '...', 
    success: function(){ 
    alert('AJAX successful'); 
    } 
}); 

// set success action just after starting the request 
var jqxhr = $.ajax("...") 
    .done(function() { alert("success"); }); 

私はこの変更はjQueryの1.5の新しい繰延オブジェクトとの互換性のためだと思います。

関連する問題