jQuery.parseJSON против jQuery.getJSON - PullRequest
5 голосов
/ 05 апреля 2011

Я довольно новичок в использовании JSON (и в целом в функциях jQuery Ajax). Я пытаюсь создать отдельный файл, содержащий объект JSON, указать на этот файл, сохранить объект как переменную и получить доступ к свойствам объекта с помощью точечной нотации.

jQuery.parseJSON () позволяет мне делать то, что я хочу, но я хочу сделать следующий шаг, указывая на отдельный файл.

Например, следующее ведет себя точно так, как я и ожидал, открывая окно с предупреждением «красный»:

var test = $.parseJSON('{"simple":"red"}');
alert(test.simple);

Следующее, которое указывает на файл, содержащий тот же объект JSON, не работает, открывая окно с предупреждением «undefined»:

var test = $.getJSON('simple.json');
alert(test.simple);

Я явно не правильно это использую. Какой правильный способ сделать то, что я пытаюсь достичь здесь?

Ответы [ 6 ]

7 голосов
/ 05 апреля 2011

Оформить заказ по документам getJSON: http://api.jquery.com/jQuery.getJSON/

вы должны делать что-то вроде:

$.getJSON('simple.json', function(data) {
  alert(data.simple);
});

всегда платит за чтение документации по API

6 голосов
/ 05 апреля 2011

Я думаю, вы неправильно поняли getJSON. Он не возвращает объект JSON, но является сокращением для анализа текста ответа от запроса AJAX как JSON.

Когда вы вызываете getJSON, вы фактически выполняете асинхронный запрос. При вызове оповещения запрос еще не вернулся.

Попытка:

var test;
$.getJSON('simple.json', {}, function(data) {
  test = data;
  alert(test.simple);
});

Шабба: http://api.jquery.com/jQuery.getJSON/

2 голосов
/ 05 апреля 2011

$.getJSON отправляет HTTP-запрос GET на сервер и выполняет обратный вызов при получении данных.

$.getJSON('simple.json', function(data) {
    alert(data.simple);
});

В качестве альтернативы, если вы используете jQuery 1.5 или более позднюю версию, вы можете использовать новый синтаксис jqXHR .

$.getJSON('simple.json')
 .success(function(data) {
    alert(data.simple);
 });
1 голос
/ 18 февраля 2015

Разница между getJson и parseJson

jQuery.getJSON () используется для загрузки JSON-кодированных данных с сервера с помощью HTTP-запроса GET.

$.getJSON( "ajax/test.json", function( data ) {  
    $.each( data, function( key, val ) {    
        //your actions
});

jQuery.parseJSON () принимает правильно сформированную строку JSON и возвращает полученное значение JavaScript.

var obj = jQuery.parseJSON( '{ "name": "John" }' );

Другими словами

Метод $ .getJSON () загружает закодированные в JSON данные с сервера, используя HTTP-запрос GET на основе URL-адреса, на который отправляется запрос.Затем вы можете использовать метод $ .parseJSON () для анализа объекта или массива JavaScript, как определено структурой JSON.

0 голосов
/ 05 апреля 2011

$.get('path/to/file', function(data) { my_variable = data; }, "json" );

0 голосов
/ 05 апреля 2011

getJSON предназначен для загрузки данных, а не для анализа

Загрузка данных в формате JSON с сервера с использованием HTTP-запроса GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...