我正在尝试使用 JSONP 获取 JSON 文件:
function getJson() {
var url = 'http://www.oref.org.il/WarningMessages/alerts.json?callback=?';
$.getJSON(url, function(data) {
checkJson(data);
});
setTimeout(arguments.callee, 2000);
}
getJson();
问题是我收到此错误:
Uncaught SyntaxError: Unexpected token :
所以我在网上搜索,找到了一些解决方案,但没有一个有效。
我尝试使用 Ajax,并尝试将 $.getJSON
替换为 $.parseJSON
但出现此错误:
Uncaught SyntaxError: Unexpected token h
JSON 文件:
{
“id”:“1406032249536”,
“标题”:“测试”,
“数据” : []
}
最佳答案
由于您的网址中有 callback=?
,因此您正在发出 JSONP 请求。
JSONP 请求的响应必须是 JavaScript 应用程序。它应该由一个函数调用(对由(PHP 术语)$_GET['callback']
定义的函数)和一个参数(您要求的数据)组成。
您正在获取 JSON,因此您尝试连接的服务不支持 JSONP(至少不支持标准 callback
参数 - 查阅他们的文档可能会给您提供不同的参数来使用)。
您可以制作一个标准的 XMLHttpRequest(通过去掉 callback=?
),但您(在评论中)说这会给您带来关于 Access-Control-Allow-Origin 的提示
未授予您的网站访问权限。
如果您控制 JSON 端点,则可以对其进行更改,使其支持 JSONP 或 CORS(这就是提供 Access-Control-Allow-Origin
的功能)。不过,听起来您无法控制该端点,因此这不是一个选项。
这给您留下了一个选择:使用代理。
向您自己的服务器发出 Ajax 请求。让服务器上运行的服务器端程序向 JSON 端点发出请求并返回数据。
您还可以考虑使用第三方代理,例如 YQL,但这可能会受到您在该问题的另一条评论中提到的地理限制的影响。
关于javascript - 获取 json 意外 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24884416/