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);