JQuery неправильно анализирует JSON

У меня проблема. Я создал скрипт для запроса внутренней ссылки, которая отправляет ответ. Вот как выглядит скрипт:

jQuery.get(callUrl, function(data){
              console.log(typeof data);
              jQuery.each(data.items, function(i,item){            

                                      console.log(i);

                                });
        },'json');

и ответ, который сервер отправляет обратно, выглядит так:

{"items":[            
  {
   "src": "gallery_item_data_Jc4EaLP6vlwd_large.jpg",
   "id": "83",
   "gallery_id": "30",
   "username": "admin"
  }]
}

Моя проблема в том, что когда я анализирую данные, их тип всегда является строкой. Мне нужно, чтобы он был объектом, чтобы я мог запросить его и проанализировать с помощью своего сценария. Чтобы понять суть проблемы, я попытался сравнить мой скрипт с примером на странице документации jQuery:

http://docs.jquery.com/Ajax/jQuery.getJSON

Основные различия с запросом на этой странице и моим запросом в том, что он использует метод getJSON. Когда я попытался использовать это с URL-адресом моего сервера, я вообще не получил ответа, поэтому я выбрал метод get и указал тип возвращаемого значения как «json».

Еще одна вещь, которую я попробовал: я проверилКанал Flickr что пример jQuery использует для поиска заголовка Content-type, который он отправляет обратно, думая, что, возможно, в моем фиде был неправильный заголовок, и это в фиде Flickr:

Content-Type    application/x-javascript; charset=utf-8

Это точно такой же заголовок на моей собственной ленте. Так что я озадачен. Кто-нибудь знает, почему это происходит?

Ответы на вопрос(2)

вызвав функцию JavaScript eval ()? Если вы сначала вызываете eval (data) в своей функции обратного вызова, это должно дать вам объект.

Решение Вопроса

JSON должен иметь квадратные скобки, поэтому он должен быть:

({"items":[            
  {
   "src": "gallery_item_data_Jc4EaLP6vlwd_large.jpg",
   "id": "83",
   "gallery_id": "30",
   "username": "admin"
  }]
})

После этого вы сможете использовать getJSON, так как это самый простой способ получить данные в виде объекта. Тем не менее, вы также можете eval () строку, и это будет возвращать объект.

 picardo17 дек. 2008 г., 18:12
Я решил это, когда использовал eval () и окружающий возвращаемый объект с паренами. Теперь он работает и с getJSON. Спасибо, парни!
 picardo17 дек. 2008 г., 18:05
Это правда, сингполима, Как мне сделать поддержку JSONP на моем внутреннем сервере?
 singpolyma17 дек. 2008 г., 18:02
getJSON может не работать, если JSONP не поддерживается на конечной точке, к которой он обращается.

Ваш ответ на вопрос