如果我愿意,Jquery.AjaxComplete并且不执行特定代码

时间:2009-11-20 19:05:06

标签: jquery json

例如,我有捕获json的通用代码,它说 - “它的错误请求”。此代码在ajaxComplete中,如何从ajaxComplete点停止执行特定代码?

$.post('url', params, 
    function(json){
        if (json.success == false){
             alert('error')
        }
        if (json.success == true){
             alert('success')
        }
    }, 'json'
);

而不是每个ajax请求中的代码,我想使用类似的东西:

$().ajaxComplete(function(e, xhr){
        if (json.success == false){
             stop_execution_of_post()
        }
        if (json.success == true){
             proceed_execution_of_post();
        }
}

比在帖子中,你只能写这个:

$.post('url', params, 
    function(json){
        alert('success')
    }, 'json'
);

是否可以停止执行SPECIFIC ajax功能?

1 个答案:

答案 0 :(得分:0)

您可以覆盖jQuery的内部方法,而不是使用ajaxComplete。显然你需要小心,因为内部方法可能会改变。这是针对jQuery 1.4编写的。

该方法是jQuery的httpSuccess(xhr)。这需要XMLHTTPRequest个对象。当它返回false时,调用jQuery的AJAX错误处理程序(handleError)。最值得注意的是,success处理程序未被调用。请注意,始终会调用complete处理程序。

一个例子:

// Remember the old function
var oldhttpSuccess = jQuery.httpSuccess

// Create the override
jQuery.httpSuccess = function (xhr) {
    // Record the result from the old function
    var success = oldhttpSuccess(xhr)
    // If that's bad return 
    if (!success) {
        return success
    }

    // Do our custom test
    if (weNeedToStop) {
       return false
    }

    // Return the "inherited" success value
    return success
}

因此,只要我们的weNeedToStop测试为真,对于任何ajax响应,都不会调用成功处理程序。