Функция загрузки Javascript никогда не вызывается - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу получить файл json с запросом get от веб-службы, и у меня есть «запрос на перекрестное начало», поэтому я проверяю «withCredentials», а затем использую функцию onload для отображения содержимого json наконсоль.

function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();

  if ("withCredentials" in xhr) {
    xhr.open(method, url, true);
    console.log("withCredentials is true");

    xhr.onload = function() {
      console.log('ok');
      if (xhr.status >= 200 && xhr.status < 400) {
        data.forEach(card => {
          console.log(card.nameEnglish1);
        })
      } else {
        console.log('error');
      }
    };

    xhr.onerror = function() {
      console.log('There was an error!');
    };

  } else if (typeof XDomainRequest != "undefined") {
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    xhr = null;
  }
  return xhr;
}

var xhr = createCORSRequest('GET', 'http://192.168.42.176:8080/batch-recup-mtg-0.0.1-SNAPSHOT/mtg/cards/search?setCode=AKH');
if (!xhr) {
  throw new Error('CORS not supported');
}

Но ничего не происходит, моя функция загрузки никогда не вызывается, и у меня нет ошибок.Я уверен, что веб-сервис работает, потому что я попробовал это в своем браузере.У вас есть идея, почему функция загрузки никогда не вызывается?

РЕДАКТИРОВАТЬ: console.log("withCredentials is true"); отображается, но console.log('ok'); не

1 Ответ

1 голос
/ 09 апреля 2019

Вам нужно

xhr.send();

function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();

  if ("withCredentials" in xhr) {
    xhr.open(method, url, true);
    console.log("withCredentials is true");

    xhr.onload = function() {
      console.log('ok');
      if (xhr.status >= 200 && xhr.status < 400) {
        data.forEach(card => {
          console.log(card.nameEnglish1);
        })
      } else {
        console.log('error');
      }
    };

    xhr.onerror = function() {
      console.log('There was an error!');
    };

    // added send call here:
    xhr.send();

  } else if (typeof XDomainRequest != "undefined") {
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    xhr = null;
  }
  return xhr;
}

var xhr = createCORSRequest('GET', 'http://google.com/');
if (!xhr) {
  throw new Error('CORS not supported');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...