如何在jQuery上致电Ajax Ready状态 $.ajax 方法?

有帮助吗?

解决方案

$.ajax() 返回xmlhttprequest对象,因此,如果您 真的 想要随着国家的变化而访问它,您可以做到这一点:

var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };

但是内置回调应该是您大多数用途所需的全部,尤其是 successcomplete.

要在请求发出之前做事,请使用 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.")}
});

您可以在回调函数中查看可以访问哪些参数的文档。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top