将jQuery.ajaxSetup范围仅限于特定对象内部

时间:2012-10-29 08:27:09

标签: javascript jquery ajax scope

这可能很奇怪,但我正在寻找的是如何仅在特定对象中使jQuery.ajaxSetup()的范围。让我举个例子,我有两个对象obj_1obj_2。我想以这样的方式编写ajaxSetup,使得我在对象内的所有ajax调用都将使用一组参数,而我在第二个对象中的所有调用将使用其他一组参数。

例如

var obj_1 = {

    my_func : function(){

        $.ajax({
            success : function(){
                // do something
                // all ajax calls in this object should use one set of params (type,dataType,headers etc)
            }
        })

    }

};

var obj_2 = {

    my_func : function(){

        $.ajax({
            success : function(){
                // do something
                // all ajax calls in this object should use different params (type,dataType,headers etc)
            }
        })

    }

};

我想这样做,这样我就不必在每个ajax调用中写下所有params。

1 个答案:

答案 0 :(得分:3)

最好的办法是创建一个供对象使用的函数,并在执行ajax调用时设置参数。该对象使用该函数而不是直接调用ajax。例如,一个简单的包装函数。

或者,您可以在每个重用的对象上使用standardParams属性,也许混合使用特定于调用的参数。类似的东西:

var obj_x = {
    standardParams: {
        // These are the params that don't vary
        dataType: "json" // Or whatever
    },

    your_func: function() {
        $.ajax($.extend({}, this.standardParams, {
            // These are the params that vary
            success: function() { ... }
        }));
    }
};

(注意使用jQuery.extend来混合每个呼叫和标准参数。)

当然,您可以使用两者的组合(包装函数,它在封面下使用standardParams属性)。