【问题标题】:Is there a way to pass a value TO GM_xmlhttprequest?有没有办法将值传递给 GM_xmlhttprequest?
【发布时间】:2009-02-08 18:05:41
【问题描述】:

如此处所示:

How can I return a value from GM_xmlhttprequest?

我有一个异步脚本。我想向这个函数传递一个值,以便在调用 onload 函数时可以使用它在网页中显示。

我面临的挑战是,每次我将它传递给函数时,这个值都会改变。

所以,例如,如果我传入 'abc'、'def'、'xyz'。

我最终会得到

xyz
xyz
xyz

而不是

abc
def
xyz

所以,我的问题是,我如何将值传递给这个函数,以便函数的每次调用都知道在完成时要显示什么?

【问题讨论】:

    标签: javascript asynchronous greasemonkey gm-xmlhttprequest


    【解决方案1】:

    您正在寻找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”。

    【讨论】:

    • 多个参数的语法是什么?你只是在k之后添加一个逗号吗?例如}(k,x)
    • 另外,我无法编辑更正,但缺少)。我认为它紧跟在最后一行上方代码行中的 } 之后。
    • 有人能解释一下结尾处的}(k) 是如何工作的吗...例如,(k) 是如何GM_xmlhttpRequestonloadk 的值传递给for 循环?我也对return function(xhr){alert(text)} 感到困惑。具体来说,我不了解该功能的必要性;例如为什么那行代码不是简单的alert(text)
    猜你喜欢
    • 2015-07-27
    • 2017-09-02
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2019-08-18
    相关资源
    最近更新 更多