为每个$ .ajax()分隔jQuery.ajaxSetup()

时间:2012-05-23 20:29:22

标签: jquery ajax

如何为不同的AJAX请求设置不同的设置(jQuery.ajaxSetup())?

我想做的是“链接”每个AJAX调用做不同的ajaxSetup()。

4 个答案:

答案 0 :(得分:6)

$.ajaxSetup()的要点是在全球范围内通过jQuery为所有ajax调用创建默认设置。如果要覆盖设置,只需在特定的ajax调用中指定它们。

例如,在代码的早期某处,定义$.ajaxSetup()

$.ajaxSetup({
    type: 'POST'
    , cache: false
    , contentType: 'application/json'
    , dataType: 'json'
    , error: function (a, b, c) {
        //default error handling
        console.log(a, b, c);       
    }
});   

然后,当你想要覆盖,比如使用GET时,请执行以下操作:

$.ajax(myUrl, {
    type: 'GET'
    , data: myData
}); 

答案 1 :(得分:2)

也许您只想使用$.extend将输入合并到您设置的某些不同默认值中。例如:

var settings1 = {
    type:"GET",
    url:"something.php"
};

var settings2 = {
    type:"POST",
    url: "somethingelse.php"
}

$.ajax($.extend(true, settings1, {
    data: {key: val}
}));

$.ajax($.extend(true, settings2, {
    data: {key: val}
}));

答案 2 :(得分:1)

您可以创建单独的对象,并使用这些对象创建传递到$.ajax的选项。

var ajaxSetup1 = {
    type: "POST",
    dataType: "html"
}
$.ajax( $.extend( ajaxSetup1, {"url","mypage.php"} ) );

当然可以将其包装在私人方法中以供重复使用。

答案 3 :(得分:0)

您是否阅读过有关.ajax()的jquery.com文档?令人惊讶的是它需要多少不同的设置(作为参数)  你很有可能在.ajax()中做你想做的事情,而不必调用.ajaxSetup()。