2011-02-25 2 views
0

i ont deux voies comme:prototype ajax aller chercher des images d'autres domaines

a) localhost/firstapplication/

b) localhost/secondapplication/images

à FirstApplication je fais ajax-demande secondapplication/html/index.html. par exemple. Je récupère tout le responsetext.

dans secondapplication il y a quelques img-tags:

<img src="../images/testpicture.png" alt="test" /> 

mon problème: si je joins l'ensemble responsetext mon navigateur recherche les images .. le lien est relatif, wich signifie: firstapplication/images.

Mais je veux les images de la deuxième application.

Y a-t-il un moyen de les rendre vraiment faciles? Ou dois-je modifier toutes les valeurs de src-attributes dans chaque balise img de "../images" à un chemin de réparation comme "localhost/secondapplication/images/"?

merci pour le soutien.

Im travailler avec prototype js 1.7 et je préfèrerais une solution avec ce cadre. Merci!

+0

un coup d'oeil à ce JSONP w/'prototype' http://teamco-anthill.blogspot.com/2010/01/ajaxjsonrequest-is-jsonp-for.html – kjy112

Répondre

0

Si firstapplication et secondapplication sont sur des domaines différents, l'AJAX ne fonctionnera pas en raison de Same Origin Policy. En tant que tel, je n'ai pas donné une réponse à votre problème d'image car une fois déployé en direct votre code ne fonctionnera pas.

+0

vous pouvez faire JSONP pour contourner le problème de politique de domaine dif – kjy112

+0

Ouais mhitza je sais cela, et c'était ma question initiale ... comment puis-je le faire fonctionner ... avec le plugin que j'ai remarqué avant est-il possible aussi ... et jsonp aussi .. – eav

0

Je vois quelques possibilités

  1. Utilisez un iframe au lieu d'AJAX. Le deuxième domaine sert les adresses URL absolues.

  2. Manipulez les URL à la fin de l'AJAX.

    new Ajax.Updater('secondapplication/html/index.html', 'ELEMENT_ID', { 
        onSuccess: function(response){ 
         var receiver = $(this.container.success); 
         var otherDomain = 'http://localhost/secondapplication/'; 
         var selector = '[src]:not([src^=/]):not([src^=http])'; 
         receiver.select(selector).each(function(element) { 
          element.src = otherDomain+element.readAttribute('src'); 
         }); 
         selector = '[href]:not([href^=/]):not([href^=http]):not([href^=#])'; 
         receiver.select(selector).each(function(element) { 
          element.href = otherDomain+element.readAttribute('href'); 
         }); 
        } 
    }); 
    // otherDomain must end in a solidus,/
    // not tested 
    
+0

S'il vous plaît, pas iframes = ( –

+0

pas d'iframes .. j'ai eu la chance de me faire connaître à la procuration. maintenant cela fonctionne =) – eav