2009-02-08 3 views
2

Как указано здесь:Есть ли способ передать значение TO GM_xmlhttprequest?

How can I return a value from GM_xmlhttprequest?

У меня есть скрипт, который асинхронно. Я хотел бы передать значение INTO этой функции, так что, когда вызывается функция 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" и "ГХИ" после того, как каждый невыполненный запрос завершается.

+0

Очень круто. Спасибо! – GeoffreyF67

+0

Какой синтаксис для нескольких параметров? Вы просто добавляете запятую после k? , например. } (k, x) – Doug

Смежные вопросы