Вызов определенной пользователем JS-функции внутри возвращенного содержимого AJAX - PullRequest
2 голосов
/ 12 мая 2009

У меня есть система, которая загружает div с контентом с помощью AJAX. Все хорошо, я могу заставить div отлично загружаться с деталями из моей базы данных, и это прекрасно работает.

Проблема заключается в следующем:

Внутри возвращенного div у меня есть пара кнопок с onClick событиями. События onClick вызывают ошибку, когда я пытаюсь вызвать пользовательскую функцию onClick="my_function();", но события onClick не вызывают ошибку, когда я вызываю определенную JS функцию onClick="alert('success');".

Кто-нибудь знает, почему это будет? my_function() определено в заголовке моей страницы. Хотя я также попытался определить его в контенте, возвращаемом AJAX, но все же безуспешно.

Любая помощь будет принята с благодарностью

Ответы [ 4 ]

0 голосов
/ 12 мая 2009

ОК, вот простой ответ ... У меня было имя и идентификатор элемента кнопки так же, как и функции, которую он пытался вызвать .. глупая ошибка, которую я знаю ... во всяком случае, теперь она работает ... однако, У меня есть еще одна проблема ... мой ajax срабатывает только один раз ... он отлично работает в первый раз, но после этого функция не работает

вот мой код:

function delete_account(account_id) {
  create_request();
  var url = "accounts_ajax.php?action=delete_account&account_id=" + account_id;

  show_div('action_window');

  document.getElementById('action_window').innerHTML = '<div class="please_wait"><img src="images/working.gif"><br>Loading...</div>';  

  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = function(){if(xmlHttp.readyState!=4)return;if(xmlHttp.status==200){reload_div('action_window', xmlHttp.responseText);}};
  xmlHttp.send(null);
  }

это просто вызывает ошибку во второй раз.

0 голосов
/ 12 мая 2009

Вы можете попробовать добавить обработчики событий через JavaScript вместо обработчиков onclick для реальных элементов.

Тогда вы можете использовать анонимные функции.

0 голосов
/ 12 мая 2009

Если вы просто обновляете innerHTML элемента DIV в результате запроса AJAX, имейте в виду, что браузер анализирует только HTML, а не сценарии.

Возможно, именно поэтому вы получаете ошибку JavaScript.

Для разбора также сценариев вам необходимо ознакомиться с документацией вашей библиотеки. Например, если вы используете ASP.NET, вы можете вызвать ScriptManager.RegisterClientScriptBlock, чтобы дать указание клиентской компонентной сети AJAX проанализировать сценарии в результате.

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

0 голосов
/ 12 мая 2009

если вы используете прототип, jquery и т. Д. (Любой JS-фреймворк), вы должны быть уверены, что для параметра "evalJS" установлено значение true. этот последний пример я положил работы в прототипе.

проверка здесь для прототипа

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