2014-09-29 152 views
1

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

问题是,API是在不同的域名,所以我不允许使用dataType:“JSON”,因为跨域策略(错误:没有'访问控制允许来源'标题出现在请求资源)。所以我尝试使用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); 
    } 
}); 

回答

1

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

JavaScript引擎正在尝试执行JavaScript。

您不能通过尝试将其加载为JSONP来访问任意数据。您请求的网站必须以JSONP格式提供。其他任何事情都会使相同的原产地政策毫无意义。

+0

有关其他信息:[Wikipedia上的JSONP](http://en.wikipedia.org/wiki/JSONP) – Jeach 2015-03-31 08:27:05