jQuery $ .ajax和ReadyStates
-
29-09-2019 - |
题
如何在jQuery上致电Ajax Ready状态 $.ajax
方法?
解决方案
$.ajax()
返回xmlhttprequest对象,因此,如果您 真的 想要随着国家的变化而访问它,您可以做到这一点:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
但是内置回调应该是您大多数用途所需的全部,尤其是 success
和 complete
.
要在请求发出之前做事,请使用 beforeSend
, ,或在大多数情况下适当地 .ajaxStart()
和 .ajaxStop()
事件...例如,每当进行任何AJAX活动时,都会显示加载消息。
其他提示
方法,用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实施长时间的“推动”通知时很有用。
您应该能够通过为 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.")}
});
您可以在回调函数中查看可以访问哪些参数的文档。
不隶属于 StackOverflow