$ .ajax的onreadystatechange事件

时间:2013-09-17 09:29:43

标签: javascript jquery ajax xmlhttprequest

我想使用来自JQuery(2.0.2)onreadystatechange的(基础)XMLHttpRequest的{​​{1}}事件来触发同步ajax请求,以便我可以显示准确的状态指示长期运行请求的最终用户。但似乎已从最新版本的JQuery中删除了此功能(请参阅here),使具有异步Web请求的微调器仅使用 选项来向用户表示活动。

使用$.ajax(...)我会做类似下面的事情(尽管我仍然不想使用JQuery),JQuery中是否还有一种方法可以访问readystate更改函数?是否有一个暴露XMLHttpRequest事件的插件?

onreadystatechange

JSFiddle

1 个答案:

答案 0 :(得分:6)

你是说这样的意思吗?

var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
    var xhr = _orgAjax();
    xhr.onreadystatechange = function() {
        //you can log xhr.readystate here
        if( xhr.readyState == 4 ) {
             $("div").html("Done");
        }
    }
    return xhr;
};
$(function(){
    $("<div>Loading</div>").appendTo($("body"));
    var anticache = "?anticache=" + new Date().getTime();
    $.ajax({
        url: "http://fiddle.jshell.net",
        error: function() {
            console.log("error");
        }
    });
});

演示:: jsFiddle