Вам нужно обернуть вызов AutoRefresh в обработчик события onload. Прямо сейчас функция запускается (или пытается запустить), как только она выводится в браузер, поэтому в этой точке нет кнопки для нажатия.
В jquery:
<script type="text/javascrpt">
$(function() {
autoRefresh();
});
</script>
Обновление:
Если вы хотите, чтобы кнопка обновления была нажата после того, как пользователь внес изменения через AJAX, сделайте что-то вроде:
$.ajax({
data: //data sent to script;
url: //path to PHP script
success: autoRefresh();
}
});
Если вы хотите, чтобы он обновлялся только тогда, когда PHP-скрипт отправляет какое-то «безопасное слово», измените функцию успеха на что-то, что просматривает ответ сервера, а если это сигнал «все очищено», тогда выполняется автообновление.
Обновление 2:
Хорошо, после того, как вы все это угадали, вам нужен собственный обработчик событий, связанный с функцией. Итак, пусть PHP выведет следующий скрипт jquery:
<script type="text/javascript">
$(function() {
$("#refreshItemId").click(function() {
$(this).delay('200');
autoRefresh();
});
});
Пара заметок:
Метод задержки является новым для jquery 1.4. Если у вас более старая версия, существуют другие методы, которые можно использовать для остановки функции.
У меня еще не было шансов возиться с .delay()
, так что, возможно, я немного испортился.
Но общая идея должна быть ясной: привязать функцию к ссылке при загрузке страницы; Когда событие onclick запускает функцию, она ждет 0,2 секунды, пока завершится работа Ajax Drupal; наконец, он запускает функцию автообновления.