我正在使用Web服务来填充选择列表,现在我需要对多个选择列表执行相同的操作,理想情况下使用相同的方法尝试和限制代码量。下面是我使用,使我的Web服务调用的方法:将数组传递到Javascript函数
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);
}
});
}
以下是我会打电话给它(我使用淘汰赛):
GetReferences(self, self.colourReferences, '/GetColourReferences');
为寻找谢谢:)
一般说明。你永远不会(永远不会*,永远不会*,**永远**)使用同步的Ajax调用。忘记它们存在。 – Tomalak 2013-02-09 21:08:35
是的,不要使用SYNCHRONOUS AJAX CALLS他们真的会把你搞砸,这几乎是100%的保证。要么手动嵌套回调中的所有内容,并且/或者使用caolan的异步库来管理回调:https://github.com/caolan/async。 – sajawikio 2013-02-09 21:20:22
要将数组传递给函数,只需执行以下操作:myfunction(myarray)。但在你的情况下,为什么你不只是有一个选择列表的数组,然后遍历该数组,然后调用每个选择所需的任何函数?您可以使用caolan的异步库,通过使用async.forEachSeries和/或async.waterfall,确保这是异步并按顺序完成的(即等待异步完成后再执行下一步)。 – sajawikio 2013-02-09 21:22:30