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

grc*_*grc 4 jquery json windows-desktop-gadgets

我正在尝试使用jquery访问存储在JSON文件中的数据(与小工具位于同一文件夹中).以下示例在firefox和Internet Explorer中均可正常工作(显示"成功"),但作为小工具,它不起作用(显示"失败").

$('#gadgetContent').html("fail");

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

    $('#gadgetContent').html("success");
});
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?谢谢.

更新:

$.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
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*ant 5

您应该像文本一样读取文件,然后将其转换为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);
    }
Run Code Online (Sandbox Code Playgroud)

记得用完整的路径调用它:

var gadgetPath = System.Gadget.path;
var jsonFile = gadgetPath + "\\" + "foo.json";

var json = getJsonFromFile(jsonFile);
Run Code Online (Sandbox Code Playgroud)