javascript - jQuery ajax 禁用解析

标签 javascript jquery ajax json jsonp

我正在使用一些游戏 api,它根据请求返回 json 格式的数据。

问题是,api 位于不同的域上,因此由于跨域策略,我不允许使用 dataType: "json"(错误:请求的资源上不存在“Access-Control-Allow-Origin” header )。所以我尝试使用 jsonp 代替。当我使用 jsonp 时,jQuery 会抛出 parseError,因为来自服务器的数据是 json 而不是 jsonp。

我已经尝试过 jsonpCallback 和此类的所有内容 - 服务器仍然返回 json。

我也尝试使用xhr.responseText,但是是空的。有没有什么方法可以告诉 jQuery 不要解析数据 - 我可以手动解析字符串,只需在 jsonp 上设置数据类型以使服务器正确响应。

服务器返回数据。我知道它不是空的,我可以使用 chrome 中的开发人员工具检查它。

我的代码:

$.ajax({
    url: "http://eu.battle.net/api/wow/character/turalyon/Blargh",
    type: "get",
    data: { fields: "quests" },
    dataType: "json",
    success: function(data, textStatus, jqXHR){
        if(typeof func === "function"){
            func(data);
        }
    },
    error: function(jqXHR, textStatus, errorThrown){
        contentField.html(textStatus);
    }
});

最佳答案

jQuery 不解析数据。 JSONP 的工作原理是将数据编码为脚本中函数调用的参数,该脚本仅包含该函数调用,然后通过向文档添加脚本元素来加载它。

JavaScript 引擎正在尝试执行 JavaScript。

您无法通过尝试将数据加载为 JSONP 来访问任意数据。您请求的站点必须以 JSONP 格式提供。其他任何事情都会使同源政策变得毫无意义。

关于javascript - jQuery ajax 禁用解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109893/

相关文章:

javascript - ajax 调用字符串方法不起作用

javascript - Node.js Express router.post 返回 404 未找到

javascript - 在输入日期字段的多次迭代中加载日期选择器

javascript - 使用 PHP 和 Javascript 删除选定 ID 的选定行

javascript - 没有内容时如何在底部设置页脚

Javascript - div 在滚动问题上覆盖 div

javascript - 使用 CSS 控制额定填充率

javascript - jQuery 模式对话框打开多次

jQuery:针对不同事件使用不同的 ajaxStart 和 ajaxStop

javascript - 编写复杂的 XMLHTTPRequest