Javascript объект не может получить доступ к URL, если он был получен от AJAX

Если URL-адрес назначен вручную, например, imgUrl="http://image.jpg", он работает отлично, но если он получен с использованием AJAX в функции "getRemote" от серверной части, это не так. Если запрос асинхронный, он даже не находится в этом блоке, но если он синхронный, он получен, но объект AR не может его использовать. Есть идеи почему?

var imgUrl = getRemote();
this.img = new AR.ImageResource(imgUrl);
this.imgOverlay = new AR.ImageDrawable(this.img, 0.5, {
    offsetX: 0,
    offsetY: 0,
});

Функция getRemote:

function getRemote() {
return $.ajax({
    type: "GET",
    url: "http://someurl.php",
    async: true
}).responseText;

}

1 ответ

Решение

Если вы не можете ждать ответа, метод не может вернуть ответ ajax, вместо этого вы должны обернуть свой код в функцию и использовать его как обратный вызов, который будет выполнен после завершения ajax:

var callOnRemote = function(imgUrl){
   this.img = new AR.ImageResource(imgUrl);
   this.imgOverlay = new AR.ImageDrawable(this.img, 0.5, {
       offsetX: 0,
       offsetY: 0,
   });
};

getRemote(callOnRemote);

Функция getRemote с jquery будет выглядеть примерно так:

$.ajax({
  url: "/test.html"
}).success(callOnRemote);
Другие вопросы по тегам