Могу ли я извлечь JSON из URL-адреса API и использовать его в качестве входного файла json2html?

Я работаю над веб-страницей, которая отображает данные json в иерархической структуре html, используя плагин jQuery http://json2html.com/.

В настоящее время данные 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 но не повезло, я не уверен, куда идти дальше?

2 ответа

Попробуйте этот 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);

Вы должны быть в состоянии использовать $.getJSON, как это

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

А затем просто передайте объект данных в json2html. Тем не менее, обратитесь к API, который вы подключаете к http://explorerapi.barratthomes.co.uk/v2.0/development/getbyitemkey как им может потребоваться JSONP (который в значительной степени просто выполняет функцию обратного вызова, чтобы обойти CORS),

Смотрите http://api.jquery.com/jquery.getjson/

Если URL содержит строку "callback=?" (или аналогичный, как определено> серверным API), запрос обрабатывается как JSONP. Смотрите обсуждение> типа данных jsonp в $.ajax() для более подробной информации.

Другие вопросы по тегам