Предоставление парсера в качестве атрибута в функции jJery getJSON - PullRequest
1 голос
/ 04 августа 2011

Функция cue.getCueAsSource (); дает мне хороший и чистый файл JSON, который выглядит следующим образом:

{
"A" :
    {
        "B" : [{"value" : "brunos homepage" , "type" : "literal"}]
    }
}

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

var cueText = cue.getCueAsSource();

$.getJSON(cueText, function(json) {
    $('#meta').html('<p>Title: ' + json.A.B[0].value + '</p>');
});

Но это выдает мне эту ошибку в firebug:

GET { "A" : { "B" : [{"value" : "brunos homepage" , "type" : "literal"}] } }
500 Internal Server Error

Что не так? Есть ли другой способ поместить вывод json из какой-либо функции в функцию getJSON? Большое спасибо. Опять же.

1 Ответ

2 голосов
/ 04 августа 2011

Вы не хотите $.getJSON() для этого.$.getJSON() является псевдонимом $.ajax() и используется для извлечения данных, отформатированных в формате JSON, с сервера и предварительного анализа их в объект перед передачей вам.

У вас уже есть строка JSON, очевиднои просто надо его разобрать.Используйте:

var cueText = cue.getCueAsSource();
var cueObject = JSON.parse( cueText );
$('#meta').html('<p>Title: ' + cueObject.A.B[0].value + '</p>');

Все браузеры, кроме IE, имеют встроенный стандартный JSON API. Для IE, downalod json2.js Крокфорда и включите его на своей странице.Он достаточно умен, чтобы оставить стандартный API один, если он есть, и предоставить его, если нет.Я предпочитаю включать его прямо перед jQuery, чтобы jQuery всегда также использовал стандартный API.

...