当前位置:  开发笔记 > 编程语言 > 正文

如何从GM_xmlhttprequest返回值?

如何解决《如何从GM_xmlhttprequest返回值?》经验,为你挑选了1个好方法。

我在这里有这个代码:

var infiltrationResult;

while(thisOption) {
    var trNode = document.createElement('tr');
    var tdNode = document.createElement('td');
    var hrefNode = document.createElement('a');

    infPlanetID = thisOption.getAttribute('value');

  var myURL = "http://www.hyperiums.com/servlet/Planetinf?securitylevel=90&newinfiltr=New+infiltration&planetid=" + PlanetID + "&infplanetid=" + infPlanetID;

    GM_xmlhttpRequest({
        method: 'GET',
        url: myURL,
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
            'Accept': 'application/atom+xml,application/xml,text/xml',
        },
        onload: function(responseDetails) {
                if (responseDetails.responseText.match(/Invalid order<\/td><\/tr>
The target planet is blocking all infiltrations[\s\S]

/im)) { // Successful match infiltrationResult = 'Invalid Order'; } else { // Match attempt failed infiltrationResult = 'Infiltration Successfully Created'; } } });

当我添加

警报(infiltrationResult);

在分配之后,我正确地看到了字符串.

但是,在函数退出后,我尝试了相同的警报,我得到:

undefined

我有什么想法我做错了吗?



1> Rob Kennedy..:

请求以异步方式运行.这就是该函数首先采用onload回调函数的原因.如果它是同步的,那么GM_xmlhttpRequest只需像普通函数一样返回响应细节.

在等待请求返回时,调用后的代码GM_xmlhttpRequest继续运行.您的脚本正确识别infiltrationResult未定义的脚本,因为请求尚未完成.

如果您需要做的不仅仅是在请求返回时分配变量,那么在onload回调中执行此操作.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有