Обновление 3 : Я только что посмотрел вашу связанную страницу ( всегда скопируйте соответствующий код в сам вопрос), и вот ваша проблема:
$.each(data.items, function(i,item){
$("<html/>").attr("src", item.event);
if ( i == 3 ) return true;
});
В результирующем объекте нет data.items
десериализации (теперь действующего) JSON, на который вы указываете. Там нет items
вообще. Ваш JSON описывает объект с одним свойством data
, которое, в свою очередь, имеет свойство current_conditions
, которое представляет собой массив с одной записью, объект со свойствами investors
, events
и price
. См. Мой код из Обновления 2 о том, как с ним взаимодействовать.
Обновление 2 : Если вы измените свой JSON, чтобы сделать его действительным, jQuery будет работать. Я имею в виду, тысячи сайтов используют это каждый день ... Живой пример с вашими данными, массирующими, чтобы сделать их действительными.
Обновление : Теперь, когда вы опубликовали свой JSON, мы видим, что он недействителен. Проверьте сайт JSON и инструмент JSONlint . Ваши массивы investors
, events
и price
содержат записи в форме {"active"}
, которая является недопустимой записью объекта.
Оригинальный ответ :
Если вы используете функцию jQuery ajax
(или getJSON
или одну из ее других оболочек), она должна быть проанализирована по времени ее просмотра. Если вам когда-нибудь придется анализировать строку JSON самостоятельно, используйте parseJSON
. Подробности:
ajax
и его обертки
Расширение на вещь ajax
: если вы возвращаете строку и ожидаете объект (например, результат анализа JSON), убедитесь, что сервер возвращает правильный тип содержимого ("application / json") «). Если вы не можете управлять сервером и отправляет неправильный тип контента, вы можете переопределить сервер, задав опцию ajax
a dataType
.
Если это не работает, вы можете проверить - действительно ли JSON действителен JSON ? Потому что там много не совсем JSON. Например, это допустимый JSON:
{
"foo": 1,
"bar": "x"
}
Это , а не :
{
foo: 1,
bar: 'x'
}
Строгий парсер может отклонить последний, потому что он недействителен (несколькими способами).
Пример - нормальная версия сервера настроена правильно:
$.ajax({
url: "yoururl",
success: function(data) {
// Here, `data` is already an object if the response was
// JSON and the server gave the correct content-type
}
});
Пример - Форсирование типа данных:
$.ajax({
url: "yoururl",
dataType: "json", // <== The new bit
success: function(data) {
// Here, `data` is already an object if the response was
// parseable JSON
}
});
или
$.getJSON("yoururl", function(data) {
// Here, `data` is already an object if the response was
// parseable JSON
});
Разбор вашей собственной строки:
var str = '{"foo": 1, "bar": "x"}'; // A JSON string
var obj = jQuery.parseJSON(str); // The resulting object