javascript - 获取 json 意外 token

标签 javascript jquery ajax json jsonp

我正在尝试使用 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/

相关文章:

javascript - 如何使用 javascript 正则表达式从文件中提取 html 标签

javascript - Node 定义我需要在模块中使用的唯一变量

asp.net-mvc - 在 Url.action javascript 中给出动态操作名称

jquery - 动态显示另一个div中div的内容

jquery - 如何在 Jquery 3.x 中为 $.post 添加超时

页面收到 AJAX 响应后 JavaScript 不再执行

javascript - 为选项卡内容 Bootstrap 多个导航选项卡

javascript - 如何选择元素中的所有文本?

javascript - bootstrap nav-tab 中的 slick js

ajax - 如何在 p :accordionPanel from outside? 的单个选项卡中使用 AJAX 更新组件