2012-04-17 4 views
2

Я нашел хороший учебник: 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").'"}'; ?> 
+0

, конечно, PHP нуждается в сервере для обработки директив PHP. в противном случае, без сервера, AJAX просто возвращает все, что было написано в файле! – Joseph

+0

Почему этот код устанавливает Content-Type запроса в 'text/plain', когда нет тела сообщения вообще? – Quentin

+1

Это не очень хороший учебник, он использует глобальную переменную 'req'. Для этого нет оснований использовать глобальные переменные. – Quentin

ответ

6

Удивительно, но это работает на сервере.

PHP - это серверная технология. Он будет работать только на сервере (в частности, на сервере, настроенном на запуск программ PHP).

Если вы используете его без такого сервера, тогда ничего не будет выполнено PHP, и он будет доставлен в браузер в его исходном состоянии.

+0

Yup. Раньше я столкнулся с этой проблемой. Проблема была в том, что библиотека PHP не разбиралась, и поэтому сервер Apache читал php-файл как html и возвращал исходный код –

+0

спасибо за ответ, но как я могу проверить его локально? – user1337922

+1

Установите веб-сервер, который поддерживает PHP в вашей системе разработки. Запустите свой код через это через http: // localhost/... ' – Quentin

Смежные вопросы