2

我需要访问我一直在尝试使用 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 没有返回任何内容,我认为它不会触发。

我错过了什么?是否需要在服务器端做更多的事情?

谢谢!

4

3 回答 3

1

您返回的数据不是 JSON-P。

Wikipedia对 JSON-P 的外观有很好的解释。有一个接受 JSON-P 的 jQuery 特定指南

于 2010-03-09T13:38:15.403 回答
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"
 }
})
于 2010-03-09T13:45:16.853 回答
0

如果您尝试验证您的 JSON 数据,例如在http://jsonlint.com/上,您会看到有一些错误。

您是通过框架还是手动生成 JSON 数据。

手动生成 JSON 数据很容易出错。

我希望能帮助你解决你的错误。

马丁

于 2014-02-15T09:10:22.550 回答