我正试图了解如何从jsfiddle向我的服务器上存储的json文件发出json请求。
HTML:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="images">
</div>
</body>
</html>
jquery:
$.getJSON("http://www.shopsheep.com/groupon/json/test.json?jsoncallback=?", function(data) {
$.each(data.items, function(i, item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 0) {
return false;
}
});
});
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=?", function(data) {
$.each(data.items, function(i, item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 0) return false;
});
});
我下载了闪烁的json文件,并将其作为test.json上传到我的服务器。如果我将其粘贴到浏览器中,它就像闪烁文件一样返回。
然而,当我尝试显示图像时,只有原始的闪烁示例正在工作?知道为什么会这样吗?
http://jsfiddle.net/stofke/DJQ5g
好的,我已经找到了如何做到这一点。 getJSON函数随机添加
命名回调函数名为jsoncallback =?这样的事情
jQuery160188050875203142_1309437718540&_=1309437718551
为了用这个回调函数包装你的json文件,你当然需要知道这个函数的名称,所以如果你将你的jsonfile转换成一个php文件,你可以得到这样的callbackfunctionname:
<?php echo $_GET["jsoncallback"];?>(
ADD JSON CONTENT HERE
)
这个php文件将通过GET变量获取回调函数的名称,并用它包装json内容。这样就可以了。
答案 0 :(得分:1)
您的JSON文件遗漏了函数名称。它应该以函数名开头。
如果您在此处看到http://api.flickr.com/services/feeds/photos_public.gne?format=json,则会以jsonFlickrFeed
开头。
你的JSON应该是这样的:
callback({
"title": "Uploads from everyone",
"link": "http://www.flickr.com/photos/",
"description": "",
"modified": "2011-06-29T21:43:16Z",
"generator": "http://www.flickr.com/",
"items": [
{....
也许您需要了解有关JSONP的更多信息。 http://en.wikipedia.org/wiki/JSONP