有没有办法确定.post
请求是否已经开始和完成。
我的意思是,如果我有代码:
$.post('address.php', { value: value }, function(data) {
alert(data);
});
我怎么知道它已经开始显示加载图像并在完成所述.post
请求后隐藏该加载图像。
我知道有一种方法可以做到这一点,因为大多数网站都在使用这种算法。我想把它写在jQuery
.
有什么输入吗?
AJAX 请求总是立即启动,因此您只需要知道它何时完成。您的加载程序可以在发送请求之前显示。
如果您需要知道它是成功还是失败,最好的方法之一是以下。
// Show your loader image
$("#loader").show();
$.post("address.php", {
value: value
}).done(function() {
// Only on success (HTTP status code < 400)
alert("Success!");
}).fail(function() {
// Only on errors (HTTP status code >= 400)
alert("Error :(");
}).always(function() {
// Hide your loader image.
// Will always happen, after .done()/.fail() were fired.
$("#loader").hide();
});
如果您使用 $.ajax 而不是 $.post(无论如何 $.post 只是一个简写的 Ajax 函数),您可以使用beforeSend
andcomplete
回调(或成功回调 - 尽管如果出现错误,此回调可能不会执行)来包含在 ajax 调用本身中显示和隐藏加载图标的逻辑,例如:
$.ajax({
type: 'POST',
data: { value : value },
url : 'address.php',
beforeSend : function() {
$("#myloader").show();
},
complete : function() {
$("#myloader").hide();
},
success : function(data) {
console.log('success');
}
});
这里是 jQuery 文档的 Ajax 部分的链接,因此您可以阅读有关回调和其他可用选项的更多详细信息。http://api.jquery.com/jQuery.ajax/
请求会立即启动,因此您可以在调用之前显示加载程序$.post()
。
调用$.post()
将返回一个promise,因此您可以执行以下操作:
// Show your loader
$("#myloader").show()
$.post('address.php', { value: value }, function(data) {
alert(data);
})
.always(function() {
// Hide it again when the request is complete
$("#myloader").hide();
});
这在$.post()
.