getJSON返回200但错误

问题描述 投票:0回答:1

我正在尝试编写一些简单的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

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

响应textStatus [parsererror] errorThrown [错误:jQuery331004379421802427674_1551456238952未被调用] [undefined]

javascript jquery json ajax getjson
1个回答
1
投票

parseError是因为jQuery认为你期待JSONP响应(即一些可执行的Javascript),而不仅仅是JSON数据。它认为,因为您将jsonCallback查询字符串参数添加到URL。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.