我需要访问子域名上的数据我一直在尝试使用jQuery支持的JSONP。我在子域上访问的数据是静态(重新生成).json文件(http://www.example.com/data.json)
我遇到了“无效标签错误”错误并意识到需要将数据包装在括号中并使用?callback =?
http://www.example.com/data.json?callback=?
({
"items": [
{
"url": "http://www.example.com",
"id": "2981",
"title": "title",
"description": "lorem ipsum sit dolor",
"start": "00:10:00",
"end": "00:20:00"
}
})
$.getJSON(url, function(data){
console.log("json: " + data);
});
将数据包装在()中,因为我现在能够看到Firebug的NET选项卡中返回的数据,但$ .getJSON不会返回任何内容,我认为它不会触发。
我错过了什么?还有什么需要在服务器端完成吗?
谢谢!
答案 0 :(得分:1)
您要返回的数据不是JSON-P。
维基百科有一个不错的explanation of what JSON-P should look like。有a jQuery specific guide to accepting JSON-P。
答案 1 :(得分:0)
您从HTTP请求返回的代码正由浏览器执行。
浏览器执行得很好,但它不知道放在哪里,因为它没有分配给任何东西。
幸运的是,jQuery足够智能,让你使用参数(callback = ?)供你在代码中使用。
您的服务器端语言必须添加该回调参数,并使您的JSON响应看起来像JavaScript函数调用:
<?php echo $_GET["callback"]?>({
"items": [
{
"url": "http://www.example.com",
"id": "2981",
"title": "title",
"description": "lorem ipsum sit dolor",
"start": "00:10:00",
"end": "00:20:00"
}
})
答案 2 :(得分:0)
如果您尝试在http://jsonlint.com/上验证您的JSON数据,则会发现存在一些错误。
您是通过框架还是手动生成JSON数据。
手动JSON数据生成容易出错。
我希望能帮助您解决错误。
马丁