В настоящее время я занимаюсь разработкой веб-сайта, и мне нужно, чтобы страницы загружались динамически в зависимости от того, какие действия выполняет пользователь.
Пример: если пользователь нажимает кнопку «Настройки», функция ajax будет загружаться изНа внешней странице код и будет помещен в div с тегом «settings».
Это код, который я использую для выполнения запроса Ajax:
function get_page_content(page, target_id)
{
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById(target_id).innerHTML = xmlhttp.responseText;
// After getting the response we have to re-apply ui effects or they
// won't be available on new elements coming from request.
$('button').sb_animateButton();
$('input').sb_animateInput();
}
}
xmlhttp.open('GET', 'engine/ajax/get_page_content.php?page=' + page, true);
xmlhttp.send();
}
И вот где результат ajaxбудет вставлен первым фрагментом:
<div id="settings_appearance">
</div>
Код вызывается из функции здесь:
<div class="left_menu_item" id="left_menu_settings_appearance" onclick="show_settings_appearance()">
Appearance
</div>
И это HTML, который функция ajax поместит в settings_appearance
div:
<script type="text/javascript">
$(function()
{
$('#upload_hidden_frame').hide();
show_mybrain();
document.getElementById('avatar_upload_form').onsubmit = function()
{
document.getElementById('avatar_upload_form').target = 'upload_hidden_frame';
upload_avatar();
}
});
</script>
<div class="title">Appearance</div>
<iframe id="upload_hidden_frame" name="upload_hidden_frame" src="" class="error_message"></iframe>
<table class="sub_container" id="avatar_upload_form" method="post" enctype="multipart/form-data" action="engine/ajax/upload_avatar.php">
<tr>
<td><label for="file">Avatar</label></td>
<td><input type="file" name="file" id="file" class="file_upload" /></td>
<td><button type="submit" name="button_upload">Upload</button></td>
</tr>
<tr>
<td><div class="hint">The image must be in PNG, JPEG or GIF format.</div></td>
</tr>
</table>
Я хотел бы знать, есть ли способ также выполнить код javascript, который возвращается функцией ajax (кнопка загрузки в коде возврата не работает из-за этого) и возможно ли эточтобы применить некоторые настраиваемые эффекты пользовательского интерфейса, которые я создаю, которые загружаются вместе с главной страницей.
Спасибо за помощь.
PS Это скрипт, который применяет эффекты пользовательского интерфейса:
<script type="text/javascript">
// UI effects
$(document).ready(function()
{
$('button').sb_animateButton();
$('input').sb_animateInput();
$('.top_menu_item').sb_animateMenuItem();
$('.top_menu_item_right').sb_animateMenuItem();
$('.left_menu_item').sb_animateMenuItem();
});
</script>
PPS Пользовательские эффекты не применяются к HTML-элементам (таким как ввод и кнопки), возвращаемым функцией Ajax.Я использовал небольшой обходной путь, применив снова ui-эффекты после того, как функция ajax вернула ответ.Вероятно, есть другой способ сделать это ... тот же, который поможет мне решить эту проблему.