2013-11-24 2 views
0

Его первый раз, когда мне приходится иметь дело с json в jquery. И им сталкивается с некоторыми проблемами, когда я открываю:Получить json с другого сайта

http://localhost:3000/calendar/termine/24-11-2013

В моем браузере я получаю:

[{"id":73539,"name":"Anneliese","input":"18-40"},{"id":73537,"name":"Appolonia","input":"14-20"}] 

Так что, когда я просто скопировать его и на него в переменной мой код работает:

var array = [{"id":73539,"name":"Anneliese","input":"18-40"},{"id":73537,"name":"Appolonia","input":"14-20"}] 

Тогда я попробовал то же самое с JQuery:

var array = $.getJSON("/calendar/termine/24-10-2013"); 

Это как-то не работает! Что я сделал не так?

Когда я открываю страницу ..termine/24-10-2013 выход выглядит это так, сейчас я не на 100 процентов уверен, что если его реальной JSON:

<html> 

    <head> … </head> 
    <body> 
     <pre> 

      [{"id":null,"name":"sara","input":"11"},… 

     </pre> 
    </body> 

</html> 
+1

[** такая же политика происхождения **] (http://en.wikipedia.org/wiki/Same-origin_policy) – adeneo

+0

Что вы хотите сказать этим? –

+0

Джон, вы сказали, что хотите получить JSON с «другого сайта», то есть не от того же источника, что и текущая страница. Прочитайте страницу adeneo, связанную с ... – nnnnnn

ответ

2

Как объяснено в $.getJSON() method documentation, он не возвращает результат, он возвращает объект jqXHR. Вы должны предоставить обратный вызов, чтобы получить результаты, а потому, что функция вызывается асинхронно вам нужно работать с результатом там:

$.getJSON("/calendar/termine/24-10-2013", function(array) { 
    // do something with array here 
}); 

«с другого сайта»

Если вы действительно пытаетесь получить данные из другого домена, тогда у вас будет проблема из-за same origin policy, но в вашем примере используемый вами URL-адрес кажется пустым в том же домене, что и страница. Если это другой домен, вы можете использовать JSONP вместо этого, если другой домен поддерживает его - конечно, если вы контролируете эту страницу, вы можете самостоятельно реализовать JSONP.

1

Вы должны ждать ответа, а затем установить переменную.

var array; 

$.getJSON("/calendar/termine/24-10-2013", function(data){ 
    array = data; 
}); 
+0

Обратите внимание, что ваша переменная 'json' на самом деле не будет содержать json, она будет содержать массив (поскольку jQuery уже проанализировал json). – nnnnnn

+0

ОК, конечно. Я забыл об этом. –

+0

Извините, но он не работает, когда я вызываю позже 'alert (array)' i get in alet rwindow 'undefined' –

0

Вы должны получить данные в формате JSON, то разбор его затем перекручивание и извлечение его с помощью каждого так: -

$('document').ready(function(){ 
    jQuery.get("your/url/that/get/json/",function(data) { 
    data = jQuery.parseJSON(data); 
    jQuery.each(data, function(key, value) {     
    jQuery('#dataContainer').append(value.id+"<br>"+value.name); 
    }); 
}); 

предположив у вас есть любой HTML площадь <div id="dataContainer"></div>

Надеется, что это helpful.`

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