2013-11-29 80 views
0

我试图找到一个很好的方法来实现这一点。如果你还有其他更好的建议,我全都听。自定义jQuery AJAX方法

基本上,我的网站有一堆ajax调用。但是,我觉得应该以这种方式调用它们,所以我不必重复代码。特别是beforeSend方法。我不想每次都在下面输入检查方法。我如何解决这个问题,所以我不必每次都输入检查方法?他们可以使用不同的方法添加到下面提到的方法中,但是下面的2总是必须被调用。我甚至可以以不同的方式实例化ajax调用。

目前,我有这个遍布不同口味的地方:

var Params = {}; 
    Params.type = "POST"; 
    Params.url = '/this/is/my/url'; 
    Params.cache = false; 
    Params.timeout = 180000; 
    Params.processData = true; 
    Params.data = { 
     action: "ajax", 
     method: "coolMethod", 
    }; 

    Params.dataType = "json"; 
    Params.beforeSend = function() { 
     checkIfUserHasLoggedOut(); 
     checkSomeOtherThings(); 
    }; 
    Params.error = function (xhr, status, error) { 

    }; 
    Params.success = function (data) { 

    }; 

回答

2

您可以使用$.ajaxSetup()设置的默认参数为Ajax请求

jQuery.ajaxSetup({ 
    cache: false, 
    timeout: 180000, 
    processData: true, 
    dataType: 'json', 
    beforeSend: function() { 
     checkIfUserHasLoggedOut(); 
     checkSomeOtherThings(); 
    } 
}) 

然后使用$.ajax()与特定参数,在所有通话中都会发生变化

$.ajax({ 
    type: 'POST', 
    url: '', 
    data: {...}, 
    success: ...., 
    failure: .... 
}) 
+0

真棒........ – KingKongFrog

+0

如果我想添加到beforeSend但不覆盖它呢? – KingKongFrog

+0

@KingKongFrog yes ....你不应该覆盖它 –