У меня есть главная страница, назовите ее Main.php. На этой странице есть кнопка, которая при нажатии устанавливает innerHTML div (уже на Main.php, называется divResults) с результатами из Results.php.
Когда вызывается Results.php, возвращенный HTML «Эти результаты» правильно принимается и устанавливается в качестве содержимого в divResults на Main.php. Однако ни один javascript из Results.php не выполняется. В качестве примера я пытаюсь сделать простой window.alert. Вот пример кода:
Кнопка ссылки Main.php для начала действия:
<img src="$MyImageSource" onclick=\"ExpandDropdownDiv()\" />
JavaScript-функция Main.php ExpandDropdownDiv():
function ExpandDropdownDiv(){
if (window.XMLHttpRequest)/* code for IE7+, Firefox, Chrome, Opera, Safari */
{
xmlhttp=new XMLHttpRequest();
}
else
{/* code for IE6, IE5 */
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)/* && xmlhttp.status==200) */
{
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Results.php",true);
xmlhttp.send();
}
Пример кода Results.php:
<script type="text/javascript">
alert("Success");
</script>
These Are The Results
------------------ Редактировать - Обновить ------------------
Простое оповещение из Results.php — это всего лишь пример. Если бы я смог заставить это работать, я считаю, что смог бы решить остальную часть моей проблемы самостоятельно. Тем не менее, я заметил несколько комментариев, предлагающих просто поместить предупреждение в javascript Main.php после того, как я установил innerHTML div. Итак, позвольте мне объяснить, что я действительно хочу делать с javascript после установки div.
Изображение 1 показывает некоторые обычные html-элементы "Выбрать", которые были преобразованы с помощью jquery и расширения раскрывающегося списка (.js). Когда пользователь щелкает цветную стрелку вниз внизу, элемент div расширяется, (изображение 2), и в этом другом файле .php генерируются еще два элемента "Select"... возвращается html, и помещается в div. Таким образом, мне не нужно перезагружать всю страницу, и я могу разместить новые раскрывающиеся списки прямо под существующими.
Проблема в том, что для «преобразования» этих обычных элементов select необходимо выполнить некоторый javascript для этого HTML:
$(document).ready(function() {
$(".MultiSelect").dropdownchecklist( {firstItemChecksAll: true, maxDropHeight: 300 , searchTextbox: true, width: 100, textFormatFunction: function(options) {
var selectedOptions = options.filter(":selected");
var countOfSelected = selectedOptions.size();
var size = options.size();
switch(countOfSelected) {
case 0: return "All";
case 1: return selectedOptions.text();
/* case size: return "All"; */
default: return countOfSelected + " selected";
}
}
}
);
}
Итак, каким-то образом мне нужно иметь возможность выполнять javascript для HTML, созданного из этого другого файла .php. И простой вызов приведенного выше кода после заполнения моего divs innerHTML повторно генерирует только уже существующие раскрывающиеся списки, а не два новых.
Примеры изображений
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
. - person KJYe.Name 葉家仁   schedule 11.02.2011