我正在尝试使用一些JSON和JS,它由我控制的PHP脚本输出。输出在http://jsonlint.com/处验证正常,但是当我尝试将其与$ .getJSON一起使用时,它会返回一个解析错误:
这是非描述性错误:Uncaught SyntaxError: Unexpected token :
这是JSON的来源:http://novaramedia.com/api/txt/
这是我的jQuery:
$.getJSON('http://novaramedia.com/api/txt/?callback=?', function(data) {
console.log(data);
}).error(function(jqXHR, textStatus, errorThrown) {
console.log(textStatus);
console.log(errorThrown);
});
errorThrown变量记录为:Error {}
JSON以非常正常的基本方式输出,PHP数组输入到json_encode。以下是脚本的输出行:
header("Content-type: application/json");
die(json_encode($output));
PHP脚本与用于另一个JSON端点[http://novaramedia.com/api/fm/]的脚本几乎完全相同,getJSON没有问题。唯一真正的区别是“内容”的价值,它直接来自wordpress帖子内容。
非常令人沮丧的问题所以任何帮助都非常感激:}
答案 0 :(得分:2)
对于JSONP,您需要预先设置回调函数。
示例:
jQuery({...})
http://novaramedia.com/api/txt/?callback=jQuery
等端点应返回jQuery( ... json output ... )
之间的响应。
扩展:
您可以使用header('Access-Control-Allow-Origin: \'http://remote-site.com\'');
,然后从其他域免费访问您的数据。
优点是其他人不能使用jsonp,但也许这是你的意图。