[英]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.