在Windows小工具中从JSON文件检索数据时出现问题

|| 我正在尝试使用jquery访问存储在JSON文件(与小工具相同的文件夹)中的数据。以下示例在firefox和Internet Explorer中都可以正常运行(显示\“成功\”),但作为小工具,它不能正常工作(显示\“失败\”)。
$(\'#gadgetContent\').html(\"fail\");

$.getJSON(\"test.json\", function(data) {

    $(\'#gadgetContent\').html(\"success\");
});
关于我在做什么错的任何想法吗?谢谢。 更新:
$.ajax({
    url: \"test.json\",
    dataType: \'json\',
    error: jsonError,
    success: jsonSuccess
});

function jsonError(jqXHR, textStatus, errorThrown) {

    // As a gadget this function is called
    // jqXHR.readyState is 4
    // jqXHR.status is 0
    // jqXHR.responseText is undefined
}

function jsonSuccess(data) {
    // Browsers reach here
}
    
已邀请:
        您应该像读取文本一样读取文件,然后将其转换为json。该实用程序将帮助您:
    function getJsonFromFile(fileName) {
        var fso = new ActiveXObject(\"Scripting.FileSystemObject\");
        if (fso.FileExists(fileName)) {
                var f = fso.OpenTextFile(fileName, 1);
                var jsonStr = \"\";
                while (!f.AtEndOfStream) {
                    jsonStr += f.ReadLine();
                }
                f.Close();
        }

        return jQuery.parseJSON(jsonStr);
    }
请记住使用完整路径调用它,例如:
var gadgetPath = System.Gadget.path;
var jsonFile = gadgetPath + \"\\\\\" + \"foo.json\";

var json = getJsonFromFile(jsonFile);
    
        Windows小工具的安全沙箱限制将干扰ajax的工作方式。 当您将URL传递给Ajax调用时,它会尝试对该URL发出HTTP请求,并且在浏览器的情况下,URL确实以(file:// localpath)的形式存在,但是对于Windows小工具,情况有点不同,即从window.location派生的相对URL无法使用,因为此处不存在window对象。 最简单的方法是将json放在JS文件中,然后使用script标记进行引用,因为HTML DOM的这一部分由sidebar.exe代码处理,该代码负责渲染/加载内容。 谢谢 内拉杰     
        与原始帖子的评论重复,似乎提供了一个适当的解决方法。 我怀疑问题在于Windows窗口小部件缺少对.json文件类型的支持。解决方法是,建议您将JavaScript对象设置为.js文件中的变量,并使用getScript检索并执行该JavaScript。 之后,该变量应在全局名称空间中可访问。     

要回复问题请先登录注册