ホームページ >バックエンド開発 >PHPチュートリアル >PHP および AJAX の応答XML の例
AJAX を使用して、データベース情報を XML で返すことができます。
AJAX データベースから XML への例 (テストの説明: このサンプル関数は実装されていません)
次の AJAX の例では、Web ページが MySQL データベースから情報を読み取り、データを XML ドキュメントに変換し、表示する方法を示します。さまざまな場所でこのドキュメントを使用して情報を表示します。
この例は、前のセクションの「PHP AJAX データベース」の例と非常によく似ていますが、大きな違いが 1 つあります。この例では、responseXML 関数を使用して、PHP ページから XML 形式でデータを取得します。
XML ドキュメントを応答として受信すると、PHP 出力を受信して表示するだけでなく、ページ上の複数の場所を更新できるようになります。
この例では、データベースから受け取った情報を使用して複数の 45a2772a6b6107b401db3c9b82c049c2 要素を更新します。
ドロップダウン リストで名前を選択します ユーザーを選択します: Peter Griffin Lois Griffin Joseph Swanson Glenn Quagmire
この列は 4 つの要素で構成されます:
MySQL データベース シンプルな HTML フォーム JavaScript PHP ページデータベース
が入りますこの記事の例で使用されるデータベースは次のようになります:
1 | Peter | Griffin | 41 | Quahog | Brewery |
2 | ロイス | グリフィン | 40 | ニューポート | ピアノ教師 |
3 | ジョセフ | スワンソン | 39 | クアホッグ | 警察官 |
4 | グレン | 泥沼 | 41 | クアホッグ | パイロット |
HTML フォーム
上の例には、単純な HTML フォームと JavaScript へのリンクが含まれています:
<html><head><script src="responsexml.js"></script></head><body><form> Select a User:<select name="users" onchange="showUser(this.value)"><option value="1">Peter Griffin</option><option value="2">Lois Griffin</option><option value="3">Glenn Quagmire</option><option value="4">Joseph Swanson</option></select></form><h2><span id="firstname"></span> <span id="lastname"></span></h2><span id="job"></span><div style="text-align: right"><span id="age_text"></span><span id="age"></span><span id="hometown_text"></span><span id="hometown"></span></div></body></html>例の説明 - HTML フォーム HTML フォームはドロップダウン リストであり、その name 属性の値オプションの値は、データベースの id フィールドに対応します。フォームの下には、ユーザーが選択するさまざまな値のプレースホルダーとして機能します。特定のオプションを指定すると、関数「showUser()」が実行されます。この関数の実行は、「onchange」イベントによってトリガーされます
言い換えると、ユーザーがドロップダウン リストの値を変更するたびに、関数 showUser() が実行され、結果が指定された < に出力されます。スパン>要素。
JavaScript
これは、ファイル "responsexml.js" に保存されている JavaScript コードです:
var xmlHttpfunction showUser(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="responsexml.php" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) }function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ xmlDoc=xmlHttp.responseXML; document.getElementById("firstname").innerHTML= xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue; document.getElementById("lastname").innerHTML= xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue; document.getElementById("job").innerHTML= xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue; document.getElementById("age_text").innerHTML="Age: "; document.getElementById("age").innerHTML= xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue; document.getElementById("hometown_text").innerHTML="<br/>From: "; document.getElementById("hometown").innerHTML= xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue; }}function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }例の説明:
showUser() および GetXmlHttpObject 関数は、PHP および AJAX MySQL データベース インスタンスを使用したこのセクションの例と同じです。そこにある関連する説明を参照できます。
stateChanged() 関数ドロップダウン リスト内の項目が選択されている場合、この関数は以下を実行します。
responseXML 関数を使用して、「xmlDoc」変数を XML ドキュメントとして定義します。この XML ドキュメントからデータを取得し、それらを格納します。正しい「span」要素内PHP ページ
JavaScript によって呼び出されるこのサーバー ページは、「responsexml.php」という名前の単純な PHP ファイルです。
このページは PHP で書かれており、MySQL データベースを使用しています。
コードはデータベースに対して SQL クエリを実行し、結果を XML ドキュメントとして返します:
<?phpheader('Content-Type: text/xml');header("Cache-Control: no-cache, must-revalidate");//A date in the pastheader("Expires: Mon, 26 Jul 1997 05:00:00 GMT");$q=$_GET["q"];$con = mysql_connect('localhost', 'peter', 'abc123');if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("ajax_demo", $con);$sql="SELECT * FROM user WHERE id = ".$q."";$result = mysql_query($sql);echo '<?xml version="1.0" encoding="ISO-8859-1"?><person>';while($row = mysql_fetch_array($result)) { echo "<firstname>" . $row['FirstName'] . "</firstname>"; echo "<lastname>" . $row['LastName'] . "</lastname>"; echo "<age>" . $row['Age'] . "</age>"; echo "<hometown>" . $row['Hometown'] . "</hometown>"; echo "<job>" . $row['Job'] . "</job>"; }echo "</person>";mysql_close($con);?>説明例:
クエリが JavaScript から PHP ページに送信されると、何が起こります:
PHP の content-typeドキュメントは「text /xml」に設定されています。PHP ドキュメントは、HTML ページから送信されたデータのキャッシュを防ぐために「キャッシュなし」に設定されています。PHP は、MySQL サーバーへの接続を開き、「ユーザー」を検索します。 "を指定したIDでデータをXMLドキュメントとして出力します