Я запрашиваю с AJAX (используя jQuery) тег, который содержит вызов функции Javascript для сервера Apache + PHP.Вот код HTML и AJAX:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://localhost/LivingLab/javascript/jquery.min.js"></script>
</head>
<body>
<a href="javascript: void(0)" onclick="
$.post(
'http://localhost/test.php', // server target page
{some_var: 'abc'}, // data to be sent via POST method
function(data) { // JS callback function
$('#container').html(data); // innerHTML of <div id="container"> will be replaced
}
)
">Click me!</a>
<div id="container"></div>
</body>
</html>
AJAX запрашивает страницу 'http://localhost/test.php', которая имеет следующий код PHP:
<?php
echo '<script type="text/javascript"> document.write("Javascript output"); </script>';
?>
Когда я нажимаю на ссылку, послеAJAX-запрос, вся страница заменяется на «вывод Javascript», вместо того, чтобы писать это только внутри тега div с идентификатором «container».
Если скрипт сервера PHP пишет что-то другое, а не тег скрипта, напримерэто:
<?php echo 'text' ?>
вызов AJAX ведет себя нормально, заменяя div на id "container", а не на всю страницу.
Я пытался исследовать данные HTTP, передаваемые этими страницами, с помощью Wireshark ипохоже, это не проблема HTTP, потому что ответ сервера точно такой, каким он должен быть:
<script type="text/javascript"> document.write("Javascript output"); </script>
Запуск кода Javascript без AJAX не заменяет всю страницу, это происходит только тогда, когда тег scriptвернулся с использованием AJAX.A заметил такое же поведение в Firefox 3 и 5, а также в Google Chrome.
Почему это происходит?