Могу ли я извлечь 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() для более подробной информации.