2015-09-10 1 views
0

Si l'URL est assignée manuellement, par exemple imgUrl = "http: //image.jpg", elle fonctionne parfaitement, mais si elle est reçue avec l'utilisation d'AJAX dans la fonction "getRemote "à partir de l'arrière ne l'a pas fait. Si la requête asynchrone n'est même pas dans ce bloc, mais si elle est synchrone, elle est reçue, mais l'objet AR ne peut pas l'utiliser. Des idées pourquoi?L'objet Javascript ne peut pas accéder à l'URL s'il a été reçu d'AJAX

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

fonction getRemote:

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

}

+1

Il est préférable d'afficher même le code getRemote() parce que le sentiment est que l'erreur peut être dans cette fonction. – pinturic

+0

Lorsqu'il est asynchrone, le code continuera à s'exécuter avant la fin de la requête AJAX. Pouvons-nous voir le résultat/code de la méthode 'getRemote()'? C'est probablement la racine du problème –

+0

[Comment retourner la réponse d'un appel asynchrone?] (Https://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous- appel) et peut-être [Cross javascript concept de domaine] (https://stackoverflow.com/questions/25310450/cross-domain-javascript-cors-concept) – Andreas

Répondre

0

À moins que vous pouvez attendre la réponse d'une méthode ne peut pas renvoyer une réponse ajax, au lieu que vous devez envelopper votre code dans une fonction et de l'utiliser aa rappel , qui sera exécutée lorsque ajax est terminé:

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

Le getremote fu Remarque avec jquery ressemblerait à ceci:

$.ajax({ 
    url: "/test.html" 
}).success(callOnRemote);