0

我正在开发一个网页,该网页使用 jQuery 插件json2html以 html 分层结构显示 json 数据。

目前 json 数据被输入到一个文本区域并按下一个按钮来运行转换。这是从文本区域获取 json 并开始转换的当前函数。

    $('#btnVisualize').click(function() {

        //Get the value from the input field
        var json_string = $('#inputJSON').val();


        try
        {
            //json
            //var json = JSON.parse(json_string);

            eval("var json=" + json_string);

            visualize(json);
        }
        catch (e)
        {
            alert("Sorry error in json string, please correct and try again: " + e.message);
        }

    });

数据来自的 api 需要大量的身份验证,所以我有一个单独的 javascript 文件来生成身份验证并创建完整的 url 来加载 api。

function generateUrl(itemkey) {
    var orig = "http://explorerapi.barratthomes.co.uk/v2.0/development/getbyitemkey?ItemKey="+itemkey+"&";
    Auth.Auth = createAuth();
    var var_pairs = [
    {name: "Auth.Utc", val: encodeURI(Auth.Auth.Utc)},
    {name: "Auth.RequestId", val: Auth.Auth.RequestId},
    {name: "Auth.DeviceId", val: Auth.Auth.DeviceId},
    {name: "Auth.Hash", val: Auth.Auth.Hash}];
    for(var i=0; i<var_pairs.length; i++) {
        orig += (i==0?"":"&")+var_pairs[i].name+"="+var_pairs[i].val;
    }
    var var_names = ["BrandCode", "ApplicationId", "ApplicationVersion", "LanguageCode", "IsPublished", "MarketingSuiteDevelopmentId", "UserLocation", "Os", "ScreenResolution", "Hierarchical"];
    for(var j=0; j<var_names.length; j++) {
        orig += "&"+var_names[j]+"="+Auth[var_names[j]];
    }
    return orig;
}

这是生成 url 的函数。

我需要从该函数中获取 url 并连接到 api 并将数据直接传递给 json2html 函数,因此我不再需要将 json 数据粘贴到文本区域中。

我一直在看,$.getJson$.parseJSON没有运气,我不知道下一步该去哪里?

4

2 回答 2

0

试试这个 Jsonp 从 url 获取数据

function insertIntoTextArea(content) {
document.getElementById('output').innerHTML = content;
}

// create script element
var script = document.createElement('script');
 // assing src with callback name
script.src = 'your proper url?callback=insertIntoTextArea';
       // insert script to document and load content
 document.body.appendChild(script);
于 2015-07-30T17:08:34.120 回答
0

您应该可以像这样使用 $.getJSON

$.ajax({ dataType: "json", url: url, data: data, success: 成功 });

然后只需将数据对象传递给 json2html。但是,请检查您连接到http://explorerapi.barratthomes.co.uk/v2.0/development/getbyitemkey的 API,因为它们可能需要 JSONP(它几乎只是执行回调函数来绕过 CORS) .

http://api.jquery.com/jquery.getjson/

如果 URL 包含字符串“callback=?” (或类似的,由 >server-side API 定义),请求被视为 JSONP。有关详细信息,请参阅 $.ajax() 中关于 jsonp 数据类型的讨论。

于 2015-07-31T00:35:19.847 回答