如何在 jQuery$.ajax
方法上调用 Ajax 就绪状态?
问问题
35740 次
3 回答
5
方法,用 jQuery 2.0.2 测试:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function () {
var output = xhr();
output.onreadystatechange = function () {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
基本上,我需要的是在readyState
变为1
(已连接)之后的回调,在我的情况下,这在使用 jQuery 实现长轮询“推送”通知时很有用。
于 2014-12-21T19:39:52.303 回答
5
$.ajax()
返回 XmlHttpRequest 对象,所以如果你真的想在状态改变时访问它,你可以这样做:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
但是内置回调应该是大多数用途所需要的,尤其是success
和complete
.
要在请求触发之前做一些事情,使用beforeSend
,或者对于大多数情况来说更合适的是.ajaxStart()
和.ajaxStop()
事件......例如,在任何 ajax 活动正在进行时显示加载消息。
于 2010-11-05T16:45:56.740 回答
1
您应该能够通过为传递给方法的对象中的 、 和 选项success
设置error
回调来获得所需的一切。看一下文档:complete
ajax()
http://api.jquery.com/jQuery.ajax/
基本上,它是这样工作的:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
您可以查看文档,了解您可以在回调函数中访问哪些参数。
于 2010-11-05T16:41:57.740 回答