Ответ 1
попробуйте это с помощью jQuery:
$('body').load( url,[data],[callback] );
Подробнее на docs.jquery.com/Ajax/load
У меня есть HTML-страница с типичной структурой:
<html>
<head>
<script src="..." ></script>
<style>...</style>
</head>
<body>
content
</body>
<script>
var success_callback = function(data) {
// REPLACE PAGE CONTENT & STRUCTURE WITH "data"
}
ajax(url, params, success_callback);
</script>
</html>
Как вы думаете, это возможно? Я уже пытался дать тегу html идентификатор и сделать $(id).replace(data);
без успеха.
Не спрашивайте меня, почему, но это то, что мне нужно (я работаю со специальным сайтом "mashup builder"... это долгая история).
EDIT. Я забыл сказать, что сценарии в полученном контенте должны быть выполнены, даже внешние скрипты, включенные с помощью <script src="...">
.
попробуйте это с помощью jQuery:
$('body').load( url,[data],[callback] );
Подробнее на docs.jquery.com/Ajax/load
Самый простой способ - установить новый HTML-контент, используя:
document.open();
document.write(newContent);
document.close();
Здесь, как это сделать в Prototype: $(id).update(data)
И jQuery: $('#id').replaceWith(data)
Но document.getElementById(id).innerHTML=data
тоже должен работать.
EDIT: Prototype и jQuery автоматически оценивают сценарии для вас.
Вы можете попробовать сделать
document.getElementById(id).innerHTML = ajax_response
Я предполагаю, что вы используете jQuery или что-то подобное. Если вы используете jQuery, тогда должно работать следующее:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
</head>
<body>
content
</body>
<script type="text/javascript">
$("body").load(url);
</script>
</html>
Не можете ли вы просто попытаться заменить содержимое тела обработчиком document.body?
если ваша страница такова:
<html>
<body>
blablabla
<script type="text/javascript">
document.body.innerHTML="hi!";
</script>
</body>
</html>
Просто используйте document.body, чтобы заменить тело.
Это работает для меня. Все содержимое тега BODY заменяется на innerHTML, который вы указываете. Если вам нужно даже изменить тег html и все дочерние элементы, вы должны проверить, какие теги "документа". способны это сделать.
Пример с javascript-скриптом внутри него:
<html>
<body>
blablabla
<script type="text/javascript">
var changeme = "<button onClick=\"document.bgColor = \'#000000\'\">click</button>";
document.body.innerHTML=changeme;
</script>
</body>
Таким образом, вы можете создавать скрипты javascript внутри нового контента. Не забывайте избегать всех двойных и одинарных кавычек, хотя это не сработает. escaping в javascript можно сделать, пройдя свой код и помещая обратную косую черту перед всеми одиночными и двойными кавычками.
Не забывайте, что сценарии на стороне сервера, такие как php, не работают. Поскольку PHP является скриптом на стороне сервера, он должен быть обработан до загрузки страницы. Javascript - это язык, который работает на стороне клиента и, следовательно, не может активировать повторную обработку php-кода.
Самый простой способ:
$("body").html(data);