jQuery + JSONP返回数据为空?
我需要访问一个子域的数据我一直在试图使用jQuery支持的JSONP。我在子域上访问的数据是一个静态(重新生成).json文件(http://www.example.com/data.json)jQuery + JSONP返回数据为空?
我遇到了“Invalid Label Error”错误,并意识到需要将数据包装在括号中并使用?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净标签返回的数据,但$ .getJSON不返回任何东西,我不认为它触发。
我错过了什么?服务器端需要做些什么吗?
谢谢!
您要返回的数据不是JSON-P。
维基百科有一个体面的explanation of what JSON-P should look like。有a jQuery specific guide to accepting JSON-P。
啊我明白你的意思了:是的,@Gregory,你的服务器返回普通的JSON,并没有注意“回调”参数。 – Pointy 2010-03-09 13:42:13
您从HTTP请求返回的代码正在被浏览器执行。
浏览器执行得很好,但它不知道把它放在哪里,因为它没有分配给任何东西。
幸运的是,jQuery足够智能,让我们使用一个参数(回调= ?)供您在代码中使用。
您的服务器端语言必须添加回调参数,使您的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"
}
})
那么在回答之前是否会添加“回调”? – Gregory 2010-03-09 14:17:05
如果您尝试验证的http://jsonlint.com/你看到有一些例如您的JSON数据错误。
您是通过框架还是手动生成JSON数据?
手动JSON数据生成容易出错。
我希望能帮助你解决你的错误。
马丁
当你说它不返回任何东西时,你的意思是什么? “数据”参数是否为空? – Pointy 2010-03-09 13:38:03