<script> внутренний ответ от Ajax.Request - PullRequest
0 голосов
/ 05 февраля 2011

есть ли возможность обновить innerHTML элемента с помощью Ajax.request, включающего теги?

<div><script type="text/javascript">javascript</script></div>

Я бы хотел обновить содержимое div с помощью кода сверху, а не проверять его.

Спасибо за помощь.

EDIT:

Хорошо, так что это не так просто, как должно быть.

У меня есть основной документ, который использует Ajax.request, который возвращает форму, как использовать функцию прототипа из основного документа для манипулирования данными после загрузки формы?

EDIT:

Это кнопка из ответа Ajax.request

<button onclick="sendForm();" id="submitForm" type="button" class="button"><span><?php echo $this->__('Send email') ?></span></button>

Это если JS из основного документа

new Ajax.Request('/path/another_path/index',
      {
        method:'post',
        evalJS: true,
        onSuccess: function(transport){
            $('sendfriend').update(transport.responseText);
            var productSendtofriendForm = new VarienForm('product_sendtofriend_form');
        }
      });

И после нажатия на эту кнопку я получаю "ReferenceError: Не могу найти переменную: productSendtofriendForm"

Ответы [ 3 ]

1 голос
/ 05 февраля 2011

Поскольку вы обновляете содержимое существующего элемента, вы можете одновременно использовать Ajax.Updater и установить его evalScripts. Вставленный тег сценария будет оцениваться в области действия Ajax.Updater, что означает, что он может получать доступ к глобальным функциям, но не к локальным для сценария, который запустил обновление.

Edit:
Вы хотите, чтобы функция, содержащаяся в теге script, существовала в глобальной области видимости. Вместо этого:

function somefunc() { ...

Вам нужно сделать это следующим образом:

somefunc = function() { ...

И определенно не используйте var, поскольку это не позволяет somefunc стать глобальной переменной. Позже, когда кнопка нажата, происходит событие onclick в глобальной области видимости, в которой теперь находится somefunc.

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

Хорошо, извините.

Единственное, что мне нужно было сделать, это объявить var productSendtofriendForm до того, как Ajax.Request ... понадобится для глобального.

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

Хорошая статья об экспериментах с innerHtml и тегами скрипта .Это не должно работать, но если тег SCRIPT имеет атрибут DEFER, он будет работать под IE.

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