【发布时间】:2019-04-17 17:50:32
【问题描述】:
我正在尝试让我的数据在控制台中显示为一个对象。但它没有这样做,控制台记录“错误”。控制台中显示的唯一其他内容是 Cross-Origin-Read-Blocking 警告。虽然没有错误。如何让我的数据登录控制台?谢谢
$.ajax({
url: "valid url that returns JSON",
type: "GET",
dataType: "jsonp",
jsonp: "callback",
headers: { "Accept": "application/javascript;odata=verbose" },
success: function (response) {
console.log(response);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
console.log(ajaxOptions);
console.log(thrownError);
}
});
在上面的代码之前,我有“json”而不是“jsonp”和“application/json”而不是“application/javascript”,如下面的代码所示,但是这些返回了 401 Unauthorized 错误以及“ CORS 没有访问控制允许来源标头”错误。当我添加 jsonp 时,这些错误消失了,并留下了一个 CORB 警告(如上面的代码所示)。但是我的 json 数据仍然无处可寻。控制台记录 ajaxOptions 会导致“parsererror”。控制台日志记录 throwedError 导致
错误:jQuery112409451109716420985_1542218619324 未被调用
在 Function.error (jquery.min.js:2) 在 h.jsonp.b.dataTypes.(匿名函数).b.converters.script json (http://kendo.cdn.telerik.com/2018.3.1017/js/jquery.min.js:4:28685) 在 Xb (jquery.min.js:4) 在 y (jquery.min.js:4) 在 HTMLScriptElement.b.onload.b.onreadystatechange (jquery.min.js:4)"
$.ajax({
url: "valid url that returns JSON",
type: "GET",
dataType: "json",
jsonp: "callback",
headers: { "Accept": "application/json;odata=verbose" },
success: function (response) {
console.log(response);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
console.log(ajaxOptions);
console.log(thrownError);
}
});
【问题讨论】:
-
你有
dataType: "jsonp"和"Accept": "application/json。如果要jsonp,则需要application/javascript,如果要json,则需要将dataType更改为dataType: "json" -
如果这是唯一的问题,那么这是What is the correct JSON content type?的副本
-
我将 application/json 更改为 application/javascript,但仍然没有运气。我首先将 json 更改为 jsonp 的原因是为了摆脱 401 未经授权的错误,该错误有效,现在错误消失了。但是我的 json 仍然没有被返回
-
好吧,您收到了 CORS 错误,因为目标上没有设置 Access-Control-Allow-Origin。 JSONP 不使用 CORS,但响应必须在 JSONP 中,否则将不起作用。我猜响应真的是JSON,你需要处理起源问题。
-
我也是这么想的。我在 chrome 中打开了 CORS,“Access-Control-Allow-Origin”错误消失了。现在我只剩下一个 401 Unauthorized 错误
标签: jquery ajax kendo-ui request jsonp