对于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?
})
答案 0 :(得分:1)
在这种情况下你不需要成功函数,你已经定义了一个成功执行的函数。
答案 1 :(得分:1)
如果孤立地看待它并且只是快乐的场景,是的:他们做同样的事情。无论请求的结果如何,都会调用作为$.getJSON
的最终参数的回调。
.success()
这样做的方式受到Promises的启发。您可以在此处详细了解它们:https://promisesaplus.com
Promises为编写许多异步操作以及处理非成功场景设置了更好的界面。
您应该使用.then()
代替.success()
:https://api.jquery.com/deferred.then/
答案 2 :(得分:1)
它们被设计为在每种情况下都执行一个功能。成功案例,错误案例以及始终执行的常规函数。
但是,stated here和here,.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)
你可以看到你的请求何时成功。你可以在控制台和类似的东西中看到一条消息......我不知道