getJSON возвращает 200 но ошибки - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь написать простой Javascript для загрузки полезной нагрузки JSON с URL.

Я знаю, что у меня есть проблемы с 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]

1 Ответ

0 голосов
/ 01 марта 2019

ParseError вызван тем, что jQuery думает, что вы ожидаете ответ JSONP (т.е. некоторый исполняемый Javascript), а не только данные JSON.Это происходит потому, что вы добавили параметр jsonCallback querystring в URL.

Как только вы удалите это, он вернется к ожиданию обычного JSON (что и возвращает конечная точка), но затем будет побежден ограничениями CORS сервера.

Вы не можете обойти CORS, притворяясь, что хотите получить JSONP, когда на самом деле это не то, что возвращает сервер.Я предлагаю вам выяснить, действительно ли этот сервер имеет конечную точку JSONP или ваше приложение можно добавить в качестве разрешенного клиента CORS.

...