javascript - 回调参数搞乱了ajax调用?

标签 javascript jquery ajax

我正在尝试通过 ajax 调用获取数据:

$.ajax({
    url: "http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1048",
    type: "GET",
    dataType: "jsonp",
    success: function(data){
        console.log(data.item.name);

    },
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }

});

因为是第三方api,所以我就jsonp。问题是:我收到语法错误:“Uncaught SyntaxError: Unexpected token :”。

当我查看控制台时,我看到了数据,但它一直显示“意外的标记:”,所以我看不到数据

现在,当我单击并导航到该网址时,我可以查看数据(即 runescape 网址)

我做错了什么?

最佳答案

"Uncaught SyntaxError: Unexpected token :".

听起来第三方API不支持JSONP ,因为当您尝试将 JSON 视为 JSONP 时,就会出现错误。请记住,JSONP 要求两端合作。

查看相关 API 的文档,它可能不支持 JSONP,可能通过不同的端点支持它,可能需要一个参数告诉它您需要 JSONP(尽管通常它们只是查找 callback jQuery会自动添加的请求参数)等

为了完整起见:服务器端需要知道发生了什么的原因是它需要发回不同的响应。下面是一个 JSON 响应示例:

{"someProperty":"someValue"}

这是它的 JSONP 版本:

someFunctionName({"someProperty":"someValue"})

...其中 someFunctionName 由调用者通过请求参数定义。服务器必须查找参数并在生成响应时使用它。这是因为严格来说,JSONP 不是 ajax,这就是为什么它不受通常规则 ajax 调用的 SOP 的约束。

关于javascript - 回调参数搞乱了ajax调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709889/

相关文章:

javascript - 使用ajax和jquery在asp.net中调用 Controller

javascript - 通过 AJAX 调用 API

javascript - Jquery 在 .each() 循环完成后的 ajax 运行代码

javascript - 如何根据输入文本搜索显示所有嵌套的列表元素?

javascript - 使用过渡效果更改文本(缩放/淡入淡出)

javascript - 遍历 html 表并检查复选框是否被选中

javascript - 想了解 SounManager Player ID

javascript - 基本垂直 SVG 线

javascript - 从单独的路由文件中访问 express 'app' 对象的最佳方法是什么?

javascript - Jquery UI 对话框无法在初始化之前调用对话框上的方法;试图调用方法 'isOpen'