簡體   English   中英

為什么將.success()與getJSON一起使用?

[英]Why use .success() with getJSON?

對於jQuery函數,使用.success()的原因是什么? 初始功能將在成功后執行,對嗎? 那么,當您包含.success()時,您是否不只是執行兩次?

$.getJSON( "ajax/test.json", function( data ) {
//this will execute upon success
})
.success(function() { 
  //doesn't this do what the above is doing?
 })

在這種情況下,您不需要成功函數,您已經定義了要在成功時執行的函數。

如果孤立地看它,只是看個開心的場景,是的:他們做同樣的事情。 不管請求結果如何,都將調用$.getJSON的最終參數回調。

.success()方式受到Promises的啟發。 您可以在這里閱讀有關它們的更多信息: https : //promisesaplus.com

Promise為組合許多異步操作以及處理不成功的方案設置了一個更好的接口。

您應該使用.then()而不是.success() https://api.jquery.com/deferred.then/

它們被設計為在每種情況下都執行一個功能。 成功案例,錯誤案例以及始終執行的常規功能。

但正如這里所述這里.success()已過時。 看到:

棄用通知:從jQuery 1.8開始,不再使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回調。 要准備將其最終刪除的代碼,請改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

使用這種方法,您有一個在成功的情況下執行的函數,在失敗的情況下執行的另一個函數,無論哪種情況都可以執行的最后一個函數:

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
    .done(function() {
        alert( "success" );
    })
    .fail(function() {
        alert( "error" );
    })
    .always(function() {
        alert( "complete" );
    });

// Perform other work here ...
// Set another completion function for the request above
jqxhr.always(function() {
alert( "second complete" );
});

您可以看到請求何時成功。您可以在控制台中看到一條消息,諸如此類...我不知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM