将数组传递给Javascript函数

时间:2013-02-09 20:52:18

标签: javascript jquery ajax

我正在使用Web服务来填充选择列表,我现在需要对许多选择列表执行相同的操作,理想情况下使用相同的方法来尝试和限制代码量。这是我用来进行Web服务调用的方法:

function GetColourReferences(self) {
    $.ajax({
        async: false,
        cache: false,
        type: 'GET',
        url: '/GetColourReferences',
        success: function (data) {
            self.colourReferences(data);
        }
    });
}

我尝试过与以下类似的东西,但我无法让它起作用 - 它甚至可能吗?

function GetReferences(self, list, refUrl) {
    $.ajax({
        async: false,
        cache: false,
        type: 'GET',
        url: refUrl,
        success: function (data) {
            list(data);
        }
    });
}

以下是我如何称呼它(我正在使用Knockout):

GetReferences(self, self.colourReferences, '/GetColourReferences');

感谢您寻找:)

1 个答案:

答案 0 :(得分:0)

1)老兄,无论你的借口听别人的提示,都不要使用同步电话,特别是如果你的后端处理速度慢或者你有一些麻烦的ui要求。

2)整理你的闭包并学习如何定位一个对象的方法,你将解决你的问题,但我会很好,并指出你正确的方向。

3)这不起作用只是因为你传递了对函数的引用,而不是对象的方法的引用,所以巧妙地称为self(WTF,你听说过语义),旁边的列表是失去了对象范围,这就是问题所在!

function GetReferences(self, list, refUrl) {
    $.ajax({
        async: false,
        cache: false,
        type: 'GET',
        url: refUrl,
        success: function (data) {
            list.call(self, data);
        }
    });
}

希望有所帮助。