【发布时间】:2016-12-05 11:04:21
【问题描述】:
我在 JQuery 中有一个 each 循环,我在其中触发了一个 ajax 请求。我想在所有 ajax 调用执行完成后显示一条成功消息。
我的代码如下,
$('.container input:checked').each(function() {
json_data = $(this).parent().parent().find('.case_json').html()
$.ajax({
type: "POST",
url: "/some_action",
data: { json_data : json_data },
success: function(data) {
console.log('saved')
}
})
}).promise().done( function(){ $('#import_message').show().addClass('alert alert-success').html('Data imported successfully!') } );
但代码的问题是我的成功消息在 ajax 调用执行完成之前就显示出来了。
我做错了什么?还是我需要改变我的实施方式?
【问题讨论】:
-
当您使用 jQuery 时,请查看使用
jquery.when() -
我的猜测是,当前第一个请求完成后,它会返回一个承诺并执行成功消息。
-
也许,你需要github.com/caolan/async
-
显示的代码根本不应该运行:你有几个无与伦比的关闭
})。 -
@nnnnnn 我的错!修正了代码!我在这里遵循了接受的答案stackoverflow.com/questions/6591700/… 但我仍然觉得必须有更好的方法来做到这一点!我这里没有大局。
标签: javascript jquery ajax