0

我正在使用该jQuery.load()方法发出 AJAX 请求并将一些内容插入到我的页面中。

我希望能够添加某种全局处理程序来检查我成功的AJAX 请求的结果,然后根据返回的数据选择性地调用全局错误处理程序。

我已经能够jQuery.get()通过使用$.ajaxPrefilter()检查请求的方法覆盖提供的“成功”方法来实现“正常”请求。(在这个 StackOverflow 答案上找到:https ://stackoverflow.com/a/6373965 )

$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
    var originalSuccess = options.success;

    options.success = function (data) {
        if(hasErrors(data)) {
           //forward to error event handler or redirect to login page for example
        }
        else {
            if (originalSuccess != null) {
                originalSuccess(data);
            }
        }   
    };
});

我的问题是该方法不适用于从该jQuery.load()方法触发的 AJAX 请求。我查看了 jQuery 源代码,它正在这样做:

jQuery.ajax({ .. })
    .done(function(responseText) {
        // Inserts HTML into DOM.
    })
    .complete(callback);

无论如何要检查成功 .ajax()方法的结果并防止延迟.done()函数被触发?

理想情况下,我想要一个可以插入上述.ajaxPrefilter()方法的解决方案,以便这种行为对整个站点都是全局的。

4

1 回答 1

0

在您的服务器端代码上,您应该能够显示成功响应或您传递的数据。您可以使用 firebug 控制台(用于 firefox)来显示 ajax 结果。或者,您可以使用 chrome 开发人员工具。在您的控制台中,只需通过右键单击它来激活 LogXMLHttpRequests。

firebug 和 chrome 开发工具的网络检查器还在 XHR 选项卡中显示 Ajax 响应。

于 2013-07-15T10:30:26.967 回答