3

这可能很奇怪,但我正在寻找的是如何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 调用中编写所有参数。

4

1 回答 1

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属性)。

于 2012-10-29T08:30:22.973 回答