我正在使用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