У меня есть веб-страница, на которой отображаются комментарии, и пользователи могут щелкнуть ссылку «Отметить», чтобы сообщить о неприемлемом комментарии.
Когда они щелкают ссылку «Отметить», я использую AJAX и innerHTML для отображения раскрывающегося списка под комментарием с кодом причины, например. Спам, Оскорбления, Не по теме и т.д., а также кнопка Отмена.
Если пользователь нажимает «Отправить», я хочу использовать другой запрос AJAX для отправки своего ответа в файл PHP, где база данных обновляется, и они получают «Спасибо» на своем конце (без перезагрузки страницы). По сути, я хочу, чтобы DIV, в котором отображается раскрывающийся список, был заменен на «Спасибо» с помощью другого запроса AJAX.
Вот где проблема. Кажется, я не могу выполнить запрос AJAX из HTML-ответа на первый запрос AJAX. Функции JavaScript терпят неудачу — даже простое оповещение («привет, мир») не работает. Я попытался разместить функции JavaScript на главной странице, которая вызывает первый запрос AJAX, а также поместить их в файл PHP, который отображается как HTML-ответ на первый запрос AJAX, но мне не повезло — функции просто выполняют не бегают, когда их вызывают.
Все работает нормально, если я загружаю файл PHP извне, поэтому я знаю, что JavaScript правильный. Это просто не работает, когда я загружаю файл PHP в DIV ответа HTML, а затем вызываю оттуда JavaScript.
Итак, чтобы подвести итог, как вы выполняете функции JavaScript из ответа HTML на запрос AJAX?
РЕДАКТИРОВАТЬ: вот пример того, что я хочу сделать:
Это часть AJAX, которая заполняет DIV, когда человек щелкает ссылку «Пометить»:
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4)
{
document.getElementById(whichdiv).innerHTML=xmlhttp.responseText;
}
};
Значение xmlhttp.responseText исходит из этого внешнего файла:
<input type="hidden"/>
<script type="text/javascript" language="javascript">
function displayalert()
{
alert ('Hello World!');
}
</script>
<form name="myform" id="myform">
<input type="text" name="myfield" value="teststring"/><br/>
<input type="button" name="button" value="Submit"
onclick="displayalert();"/>
</form>
Примечание. <input type="hidden"/>
выше исходит из предложения, которое я нашел на http://msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx.
Когда пользователь нажимает кнопку, функция javascript displayalert() не запускается. Окно предупреждения никогда не всплывает. Если я загружаю файл извне, а не вызываю его с помощью innerHTML, скрипт работает нормально.
Может ли xmlhttp.responseText содержать код JavaScript?