Javascript对象不能访问url,如果它是从AJAX接收的

Javascript object cannot access url if it was received from AJAX

本文关键字:AJAX 如果 不能 对象 访问 url Javascript      更新时间:2023-09-26

如果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;

}

除非您可以等待响应,否则方法不能返回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);
jquery的getRemote函数应该是这样的:
$.ajax({
  url: "/test.html"
}).success(callOnRemote);
相关文章: