将数组传递到Javascript函数中

Passing an Array into a Javascript function

本文关键字:Javascript 函数 数组      更新时间:2023-09-26

我正在使用一个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)伙计们,无论你的借口是什么,都要听别人的建议——永远不要使用Sync调用——尤其是当你的后端处理缓慢或你有一些混乱的ui需求时。

2) 整理你的闭包,学习如何确定对象的范围方法,你就会解决你的问题,但我会很好地为你指明正确的方向。

3) 这并不能简单地工作,因为你传递了对函数的引用,而不是对被巧妙地称为self的对象的方法的引用(WTF你听说过语义吗)那个side-list是一个失去了对象范围的函数,这就是问题所在!

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

希望有帮助。