2011-06-22 2 views
3

Я ищу для извлечения JSON данных с сервера URL, который выглядит примерно так:Как извлечь JSON из URL?

https://dev.randomdomain.com/subdomain 

Сам URL выводит данные, как например:

[ 
    { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"}, 

    { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"}, 
] 

The outputed изменения данных и потребуется соответственно. Мне интересно, какой лучший способ получить данные JSON из URL-адреса и обновить его? Я посмотрел на функцию jQuery getJSON, и я не уверен, что это будет работать, поскольку URL-адрес просто выводит JSON, это не файл .json.

Могу ли я описать это с помощью JavaScript, jQuery или любой другой открытой методологии?

Спасибо.

+0

Этот сервер находится в том же домене, с которого вы делаете запрос? Если нет, то '$ .getJSON' не будет работать без использования [jsonp] (http://api.jquery.com/jQuery.getJSON/#jsonp). – scurker

ответ

0

Вы даже пробовали использовать $.getJSON()? Он делает именно то, что вам нужно для этого, он просто считывает ответ с сервера и возвращает объект json.

+0

У меня есть.Я настроить тест функции, как такой: $ .getJSON ("https://dev.ethermetrics.net/ForTedOttey", функция (данные) { \t \t \t \t \t // сделать что-то с данными здесь \t \t \t \t \t оповещения ("оповещения работает?"); \t \t \t \t \t \t \t \t \t}); --- Однако, похоже, я не могу получить предупреждение, чтобы показать – Ted

+0

. Вам не нужна точка с запятой после URL: '$ .getJSON (« dev.ethermetrics.net/ForTedOttey », функция (данные) { alert ('Success!');}); ' Кроме того, это может быть неудачно по какой-либо другой причине (неверный код json, bad url), поэтому вы должны проверить сообщение через что-то вроде Firebug или инструментов разработчика Chrome. – scurker

0

Во-первых, вы на самом деле пытаетесь разобрать JSON из ответа. URL-адрес, на который вы запрашиваете ответ. Вот простой пример использования getJSON:

$.getJSON('https://dev.randomdomain.com/subdomain', function(data) { 
    var output = ""; 
    $.each(data, function(index, node) { 
     output += node.name + ": " + node.mac_address + "<br/>"; 
    }); 
    document.write(output); 
}); 

http://jsfiddle.net/YwPzW/1/

+0

По какой-то причине ни одна из функций getJSON не работает. Если я скопирую json, сгенерированный URL-адресом, и создаю файл .json, он работает отлично, но его вроде getJSON не анализирует JSON из URL-адреса. Сам URL-адрес является https, но даже когда я обращаюсь к нему как к URL-адресу http, он не выводится. Какие-либо предложения? – Ted

+0

Проблема заключается в том, как реагирует ваш сервер. Когда вы посещаете URL-адрес браузера, вы получаете данные JSON взамен? –

+0

Да, я смотрю: [link] (https://dev.ethermetrics.net/ForTedOttey) – Ted

0

Это не очень понятно из Вашего вопроса, если вы хотите, чтобы обработать данные на стороне клиента (браузер и т.д.) или на стороне сервера для автономной обработки ,

Для доступа к этим данным и их обработки на стороне сервера вы можете использовать curl/libcurl для извлечения данных и декодирования их на объект на выбранном вами языке. Например, в PHP:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://dev.randomdomain.com/subdomain"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 

data_as_php_object = json_decode($output); 
?> 
0

Функция $.getJSON() это поместить строку в формате JSON в JavaScript Object. Поэтому, если вы хотите получить данные, вы можете попробовать:

$.getJSON("https://dev.randomdomain.com/subdomain",function(data){ 
    alert(data[0].name); 
}); 
-1

Вы доверяете источнику строки JSON. Если вы это сделаете, просто используйте

alert(eval(dropStringHere)); 

Метод getJSON jQuery также должен работать нормально.

+0

Как правило, рекомендуется использовать собственный 'JSON.parse', так как он также проверяет правильность форматирования вашего JSON, не говоря уже о безопасных целях. – scurker

+0

@scurker Не все браузеры имеют собственный парсер JSON. – Emil

1
$,getJSON('url',function(data){ 
    alert(data); 
    // or alert("sample text"); would do if the json file is handled well enough. 
    // if no alert is shown, it's either you're using chrome with an offline version of 
    // your project or you're having an invalid json file 
}); 

Могу ли я спросить, какой браузер вы используете? $.getJSON не будет работать в Chrome, если вы делаете это в автономном режиме.

Я также расстроился, почему файл json не обрабатывается, даже если я не использую Chrome - например. Я использую FF или IE.

Я обнаружил, что вы не должны помещать комментарии внутри json-файла, поскольку это делает его недействительным. Я думаю, это потому, что .getJSON действительно анализирует данные в файле JSON как текст, а не как файл javascript, поэтому он также будет проходить через комментарий (если он есть), и, конечно же, его не пойму, поэтому я предлагаю вам удалите блок комментариев внутри ваших json-файлов.

Смежные вопросы