我有个问题.我构建了一个脚本来向发回响应的内部链接发出请求.这是脚本的样子:
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"的主要原因.
我尝试了另一件事:我检查了JQuery示例用来查找它发回的Content-type标头的Flickr提要,认为我的提要有错误的标题,这就是Flickr提要:
Content-Type application/x-javascript; charset=utf-8
这与我自己的Feed中的标题完全相同.所以我很困惑.有谁知道为什么会这样?
JSON需要在它周围有括号,所以它应该是:
({"items":[ { "src": "gallery_item_data_Jc4EaLP6vlwd_large.jpg", "id": "83", "gallery_id": "30", "username": "admin" }] })
然后,您应该能够使用getJSON,因为这是将数据作为对象获取的最简单方法.但是,您也可以eval()字符串并返回一个对象.