2012-04-17 9 views
2

ローカルに私の全体のPHPコードを返すresponsetext私は良いチュートリアルが見つかりました:tutorialAJAX:

をそれがローカルに動作しません。 問題は、responsetextが私のPHPコード全体を返すことです。 私のajaxclock.htmlをダブルクリックし、Firefoxを使用します。 意外にも、サーバー上で動作します。ここで

コード:

<!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> 

ajaxclock.html script.js

<?php echo '{"time": "'.date("H:i:s").'"}'; ?> 
+0

もちろん、PHPはPHPディレクティブを処理するサーバが必要です。それ以外の場合は、サーバーがなければ、AJAXはファイルに書かれたものを返します。 – Joseph

+0

メッセージ本文が全くない場合、そのコードはリクエストのContent-Typeを 'text/plain'に設定するのはなぜですか? – Quentin

+1

これは良いチュートリアルではなく、グローバルな 'req'変数を利用しています。このためにグローバルを使用する理由はありません。 – Quentin

答えて

6

ajaxclock.php

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; 
    } 
} 

驚くべきことに、それがサーバー上で動作します。

PHPはサーバ側の技術です。これはサーバ(特にPHPプログラムを実行するように設定されたサーバ)上でのみ動作します。

このようなサーバーを使用せずに使用すると、PHPは実行されず、生の状態でブラウザに配信されます。

+0

となりました。私は以前この問題に直面していました。問題はPHPライブラリは解析されていませんでしたので、ApacheサーバはhtmlとしてPHPファイルを読み込んでいました。答えは –

+0

ありがとうございます。どうすればローカルでテストできますか? – user1337922

+1

開発システムでPHPをサポートするWebサーバーをインストールしてください。 'http:// localhost/... 'でコードを実行してください。 – Quentin