原型ajax从其他域获取图像

时间:2011-02-25 14:32:23

标签: javascript ajax prototypejs

我有两条路:

a)localhost/firstapplication/

b)localhost/secondapplication/images

在第一次应用中,我向secondapplication/html/index.html发出ajax请求。例如我获取整个responsetext。

在第二个应用程序中有一些img-tags:

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

我的问题:如果我追加整个responsetext我的浏览器正在查找图片..链接是相对的,意思是:firstapplication/images

但我想要第二次应用的图像。

有什么方法可以让它们变得简单吗?或者我是否必须将每个img标记中src-attributes的所有值从"../images"更改为"localhost/secondapplication/images/"等修复路径?

感谢您的支持。

我正在使用prototype js 1.7,我会优先使用此框架解决方案。谢谢!

2 个答案:

答案 0 :(得分:0)

如果firstapplicationsecondapplication位于不同的域中,则由于Same Origin Policy,AJAX将无法运行。因此,我没有对您的图像问题做出回应,因为一旦部署到现场,您的代码将无效。

答案 1 :(得分:0)

我看到了一些可能性

  1. 使用iframe代替AJAX。

  2. 让第二个域提供绝对网址。

  3. 在AJAX完成时操纵URL。

    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