Как я могу заставить Javascript работать в Prototype AJAX Request? - PullRequest
1 голос
/ 05 августа 2009

Я пытаюсь получить HTML / Javascript с внешней страницы PHP, используя Prototype / AJAX, и HTML хорошо отрисовывается, но Javascript не работает после запроса AJAX.

Я также показываю полосу загрузки, пока страница загружает данные, и эта часть работает нормально. Мой код Symfony PHP + Prototype приведен ниже. Буду очень признателен за любой совет, который может направить меня в правильном направлении!

<?php echo javascript_tag(
      remote_function(array(
      'update'  => 'getinfo',
      'method'    => 'get',
      'script'     => true,
      'url'     => 'event/load?id='.$sf_params->get('id'),
      'loading'    => "Element.show('loading')",
     'complete'   => "Element.hide('loading')",
))
 ) ?>

1 Ответ

2 голосов
/ 05 августа 2009

Из " Полное руководство по Symfony ":

Даже если вы включите выполнение сценария для удаленного ответа, вы фактически не увидите сценарии в удаленном коде, если используете инструмент для проверки сгенерированного кода. Сценарии будут выполнены, но не появятся в коде. Хотя это странное поведение, оно совершенно нормально.

Мне кажется, это потому, что remote_function реализован с использованием прототипа Ajax.Updater ; Опция remote_function script становится опцией Ajax.Updater evalScripts. Документы для Ajax.Updater содержат следующее:

Если вы используете evalScripts: true, любой блок будет оценен. Это не означает, что он будет включен в страницу: они не будут. Их содержимое будет просто передано в собственную функцию eval (). [... Для определения функции] вам необходимо использовать следующий синтаксис:

// This kind of script WILL work if processed by Ajax.Updater:
coolFunc = function() {
    // Amazing stuff!
}

Это говорит о том, что у вас возникла проблема с областью видимости. Это все, что я могу сказать, не видя вывода javascript с помощью event.php.

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