如何检查jQueryAJAX请求的成功结果,并在插入内容之前中止jQuery.load()

How to inspect the successful result of a jQuery AJAX request and abort the jQuery.load() before it inserts the content?

本文关键字:插入 jQuery load jQueryAJAX 检查 何检查 请求 结果 成功      更新时间:2023-09-26

我正在使用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()方法中插入一个解决方案,这样整个站点的这种行为都是全局的。

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

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