getJSON returns 200 但错误

getJSON returns 200 but errors

我正在尝试编写一些简单的 Javascript 以从 URL.

加载 JSON 负载

我知道我有 CORS 问题,目前我对此没有意见。 我可以禁用 chrome 的检查。

我遇到的问题是我得到了 200 OK 响应,但也有一个错误,我不明白为什么。

var urlAddress = "https://light-ratio-149809.appspot.com/ESI-OrgUnitService?jsoncallback=?";
$.getJSON(urlAddress, {
  format: "json"
})
.always(function( jqXHR, textStatus, errorThrown ) { 
  console.log("reponse textStatus["+textStatus+"] errorThrown["+errorThrown+"] [" + jqXHR.responseText + "]"); 
})
.done(function(data) {
  console.log("success");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

谁能告诉我哪里出错了?

如果我使用这个 JSON 负载,它就可以工作。

https://gist.githubusercontent.com/Miserlou/c5cd8364bf9b2420bb29/raw/2bf258763cdddd704f8ffd3ea9a3e81d25e2c6f6/cities.json

该错误看起来是一个解析错误。

reponse textStatus[parsererror] errorThrown[Error: jQuery331004379421802427674_1551456238952 was not called] [undefined]

parseError 是因为 jQuery 认为您期待 JSONP 响应(即某些可执行文件 Javascript),而不仅仅是 JSON 数据。它认为是因为您将 jsonCallback querystring 参数添加到 URL。

一旦你删除它,它就会返回到期待常规 JSON(这是端点 returns),但随后被服务器的 CORS 限制击败。

您无法通过假装想要接收 JSONP 来绕过 CORS,但实际上这并不是服务器返回的内容。我建议您查明此服务器是否确实具有 JSONP 端点,或者您的应用程序是否可以添加为允许的 CORS 客户端。