2009-02-08 261 views
2

由於此處表示:有沒有辦法將一個值傳遞給GM​​_xmlhttprequest?

How can I return a value from GM_xmlhttprequest?

我有一個腳本,是異步的。我想給這個函數傳遞一個值,這樣當onload函數被調用時,我可以使用它來顯示在網頁中。

我遇到的挑戰是每當我將它傳遞給函數時,這個值都會改變。

所以,例如,如果我通過'abc','def','xyz'。

我最終會與

xyz 
xyz 
xyz 

,而不是

abc 
def 
xyz 

所以,我的問題是,如何將我傳遞一個值到這個函數,這樣函數的每次調用知道如何處理顯示完成後?

回答

4

你正在尋找一個closure: -

var urls = {"abc": "http://somehost/aurl", 
      "def": "http://somehost/otherurl", 
      "ghi": "http://someotherhost/aurl" } 

for (var k in urls) 
{ 

    GM_xmlhttpRequest({ 
     method: 'GET', 
     url: urls[k], 
     onload: function(text) { 
      return function(xhr) { 
       //Do stuff with xhr responseText etc and the text parameter 
       alert(text) 
      } 
     }(k) 
    } 
} 

這每一個未完成的請求完成後會提示 「ABC」, 「DEF」 和 「GHI」。

+0

非常酷。謝謝! – GeoffreyF67 2009-02-08 22:50:23

相關問題