Как я могу выполнить вызов REST XMLHttpRequest из AFrame при использовании 8th Wall Web?

Я использую 8th Wall SDK и пытаюсь вызвать API. Когда я пытаюсь сделать это из метода onclick AFrame.registercomponent, запрос не отправляется.

Я новичок в AR. Когда я попытался добавить предупреждающие сообщения для xhttp, он был пуст.

Что мне не хватает?

Есть ли этому альтернатива?

Кстати, я пробовал делать это с помощью маркера AR с помощью Awe.js, и он работал нормально.

AFRAME.registerComponent('play-on-window-click', {
  ...
  ...
  onClick: function(evt) {
    var video = this.el.components.material.material.map.image;

    // I'm sending a request from here - BEGIN
    var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.status == 200) {
          this.responseText;
        }
      xhttp.open("GET", "https://myapi/rest/abc", true);
      xhttp.send();
    }
    // END

    video.play();
  }
}

Я ожидаю, что вызов API будет успешным.


person 3a6f    schedule 05.04.2019    source источник


Ответы (1)


Вызовы xhttp.open и xhttp.send находятся внутри обработчика onreadystatechange, поэтому он не будет отправлен. Примерно так должно работать:

AFRAME.registerComponent('play-on-window-click', {
  ...
  ...
  onClick: function(evt) {
    var video = this.el.components.material.material.map.image;

    // I'm sending a request from here - BEGIN
    var xhttp = new XMLHttpRequest();
    http.onreadystatechange = function() {
      if (this.status == 200) {
        alert(this.responseText);
      }
    }
    xhttp.open("GET", "https://myapi/rest/abc", true);
    xhttp.send();
    // END

    video.play();
  }
}
person Christoph Bartschat    schedule 05.04.2019
comment
Спасибо за ответ. Но по-прежнему я не вижу отправки запроса. Однако вызов xhttp.open & send находится за пределами xhttp.onreachstatechagne. Кроме того, когда я добавил alert сообщение с http.onreachstatechagne, ничего не всплывало. - person 3a6f; 06.04.2019
comment
Вы уверены, что вызывается функция onClick? - person Christoph Bartschat; 08.04.2019
comment
Да, это так. Я поместил alert сообщение, которое отображается на устройстве. - person 3a6f; 09.04.2019