【问题标题】:Windows 7 Gadget AJAX stopped workingWindows 7 小工具 AJAX 停止工作
【发布时间】:2011-02-13 16:42:53
【问题描述】:

我正在编写一个小工具,它将显示我的游戏服务器的当前状态。 它通过返回 JSON 的 URL 获取其信息。一开始它工作得很好。但现在它似乎卡在了 AJAX 调用上。

这是我的脚本:

function start() {
$("body").css({
    height: "100px",
    width: "130px",
    margin: 0
});

$("#refresh").click(function (event) {
    event.preventDefault();
    fetch_info();
});

fetch_info();
};

function fetch_info() {
var now = new Date();
var msec = now.getTime();
ajax = new ActiveXObject("Msxml2.XMLHTTP");
ajax.open("GET", "http://the.amazing.url?msec="+msec, true);
ajax.onreadystatechange = function() {
    if (ajax.readyState === 4) {
        if (ajax.status === 200) {
            var json = $.parseJSON(ajax.responseText);
            if (json.map != "error")
            {
                $("#map").html(json.map);
                $("#mode").html(json.gamemode);
                $("#current").html(json.players);
                $("#max").html(json.max_players);
            }
            else
            {
                $("#map").html("crashed");
            }
        } else {
            $("#map").html("error");
        }
    }
    else
    {
        $("#map").html("fetching data");
    }
}    
ajax.send(null);    
}

当小部件启动时,它显示“正在获取数据”,但之后它什么也没有发生。它获取有效的 JSON 数据。

有人知道调试此脚本的原因或方法吗?

【问题讨论】:

  • 安全问题?它确实在外部。也许您需要(再次)将 the.amazing.url 添加到您信任的站点

标签: javascript ajax windows windows-desktop-gadgets


【解决方案1】:

有两个分号错误。它们很可能发生在您改进脚本的过程中,并且分号被移动了。第 14 行不需要分号,但第 44 行需要。

第 14 行:

13:       fetch_info();
14:    }

第 44 行:

44:    };
45:    ajax.send(null);    
46:    }

至于调试脚本,我使用内置的浏览器开发工具,如 IE 中的 F12 或 Chrome 中的开发者工具。在制作 Gadget 时,我用一个基本网页测试了所有脚本,以便可以观看浏览器的 javascript 控制台。

JSLint 也很有帮助。但是,我在使用它时选择了以下选项: 假设 Windows,容忍未使用的参数,容忍缺少 'use strict' pragma,容忍每个函数的许多 var 语句,以及容忍混乱的空白。否则 JSLint 会因为无关紧要的事情而对你的脚本发疯。希望这会有所帮助。

此外,如果您有 Visual Studio,则可以使用它的脚本调试器。这是一篇解释如何的文章:http://www.howtogeek.com/howto/windows-vista/how-to-debug-a-windows-vista-sidebar-gadget-with-visual-studio/

【讨论】:

  • 见鬼,我完全忘记了我在这里发布了这个问题。我还是重写了代码,但你的解决方案会奏效:) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多