【发布时间】:2015-12-10 16:44:52
【问题描述】:
我在帮助 SO 的另一个用户时偶然发现了这个问题, 有一个发送 json 格式输出的 web 服务,当查看控制台时似乎没问题,但是当直接使用 getJSON 或类似的 ajax 请求解析它时会触发解析错误:
Unexpected token ':'. Parse error.
虽然这很奇怪,但可以通过获取纯文本来解决,但是服务器需要 JSONP 请求(它没有 CORS 标头)。 我尝试了多种方法来阻止 jQuery 自动解析对 JSON 的响应,但无济于事。如果有人知道如何修复看似不正确的解析错误或首先阻止解析,请告诉我。
到目前为止我尝试过的代码是:
var baseUrl = "https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885&callback=?";
$.ajax({
url: baseUrl,
dataType: 'json',
crossDomain: true,
processData: false,
converters: {"* text": window.String, "text html": true, "text json": true, "text xml": jQuery.parseXML},
success: function(data){
$('#output').html(data);
},
error:function(jqXHR,status, error){
console.log(jqXHR);
console.log(status);
console.log(error);
$('#output').html(jqXHR);
}
});
Jsfiddle:https://jsfiddle.net/6Lwjpjmo/22/
为了让问题更清楚:
当我在 url 中使用带有回调的数据类型 json 或数据类型 jsonp 时,我可以在控制台中看到返回的 json 响应。但它会触发解析错误。
相反,如果我使用数据类型 text 或其他任何内容,则会收到跨域拒绝错误。
【问题讨论】:
-
如果需要 JSONP,可能想将您的
dataType更改为jsonp。 -
也试过了。没关系,在字符串中附加回调的数据类型 json 或在字符串中没有回调的 jsonp 的工作方式相同。
-
另外我可以在 js 控制台中看到该请求返回了适当的内容,它只是不解析..
标签: javascript jquery json ajax