繁体   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