jQuery + JSONP返回数据为空?

时间:2010-03-09 13:34:11

标签: jquery json jsonp getjson

我需要访问子域名上的数据我一直在尝试使用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不会返回任何内容,我认为它不会触发。

我错过了什么?还有什么需要在服务器端完成吗?

谢谢!

3 个答案:

答案 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数据生成容易出错。

我希望能帮助您解决错误。

马丁