прототип AJAX извлечения изображений из другого домена - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть два пути, как:

а) localhost/firstapplication/

б) localhost/secondapplication/images

в первом случае я делаю ajax-запрос к secondapplication/html/index.html. например я получаю весь текст ответа.

во втором приложении есть несколько img-тегов:

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

моя проблема: если я добавляю целые responsetext, мой браузер ищет изображения ... ссылка относительная, что означает:

Но я хочу изображения второго приложения.

Есть ли способ получить их действительно легко? Или мне нужно изменить все значения src-attributes в каждом теге img с "../images" на путь исправления, например "localhost/secondapplication/images/"?

спасибо за поддержку.

Я работаю с prototype js 1.7, и я бы предпочел решение с этой структурой. спасибо!

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Я вижу несколько возможностей

  1. Использование iframe вместо AJAX.

  2. Второй домен обслуживает абсолютные URL-адреса.

  3. Управление URL-адресами после завершения 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 голосов
/ 25 февраля 2011

Если firstapplication и secondapplication находятся в разных доменах, AJAX не будет работать из-за Одинаковой политики происхождения . Поэтому я не дал ответа на проблему с вашим изображением, потому что после развертывания в реальном времени ваш код не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...