Я нашел хороший учебник: tutorialАякса: responsetext возвращает весь мой код PHP локально
, но он не работает на местном уровне. Проблема заключается в том, что responseetext возвращает весь мой PHP-код. Я дважды нажимаю на свой ajaxclock.html и использую Firefox. Удивительно, но это работает на сервере.
Вот код: ajaxclock.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>AJAX Tutorial</title>
</head>
<body>
<div id="time"></div>
<button onclick="getTime();">Aktualisieren</button>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
script.js
var req = getXmlHttpRequestObject();
window.onload = getTime();
function getXmlHttpRequestObject()
{
if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert('Ajax funktioniert bei Ihnen nicht!');
}
}
function getTime()
{
if(req.readyState == 4 || req.readyState == 0)
{
req.open('GET', 'ajaxclock.php', true);
req.setRequestHeader("Content-Type","text/plain");
req.onreadystatechange = setMessage;
req.send(null);
}
}
function setMessage()
{
if(req.readyState == 4)
{
var response = eval('(' + req.responseText+ ')');
document.getElementById('time').innerHTML = response.time;
}
}
ajaxclock.php
<?php echo '{"time": "'.date("H:i:s").'"}'; ?>
, конечно, PHP нуждается в сервере для обработки директив PHP. в противном случае, без сервера, AJAX просто возвращает все, что было написано в файле! – Joseph
Почему этот код устанавливает Content-Type запроса в 'text/plain', когда нет тела сообщения вообще? – Quentin
Это не очень хороший учебник, он использует глобальную переменную 'req'. Для этого нет оснований использовать глобальные переменные. – Quentin