为什么将.success()与getJSON一起使用?

时间:2015-07-13 13:43:01

标签: javascript jquery

对于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?
 })

4 个答案:

答案 0 :(得分:1)

在这种情况下你不需要成功函数,你已经定义了一个成功执行的函数。

答案 1 :(得分:1)

如果孤立地看待它并且只是快乐的场景,是的:他们做同样的事情。无论请求的结果如何,都会调用作为$.getJSON的最终参数的回调。

.success()这样做的方式受到Promises的启发。您可以在此处详细了解它们:https://promisesaplus.com

Promises为编写许多异步操作以及处理非成功场景设置了更好的界面。

您应该使用.then()代替.success()https://api.jquery.com/deferred.then/

答案 2 :(得分:1)

它们被设计为在每种情况下都执行一个功能。成功案例,错误案例以及始终执行的常规函数​​。

但是,stated herehere.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" );
});

答案 3 :(得分:0)

你可以看到你的请求何时成功。你可以在控制台和类似的东西中看到一条消息......我不知道