ホームページ > バックエンド開発 > PHPチュートリアル > PHP および AJAX の応答XML の例

PHP および AJAX の応答XML の例

WBOY
リリース: 2016-06-23 14:31:51
オリジナル
1098 人が閲覧しました

AJAX を使用して、データベース情報を XML で返すことができます。

AJAX データベースから XML への例 (テストの説明: このサンプル関数は実装されていません)

次の AJAX の例では、Web ページが MySQL データベースから情報を読み取り、データを XML ドキュメントに変換し、表示する方法を示します。さまざまな場所でこのドキュメントを使用して情報を表示します。

この例は、前のセクションの「PHP AJAX データベース」の例と非常によく似ていますが、大きな違いが 1 つあります。この例では、responseXML 関数を使用して、PHP ページから XML 形式でデータを取得します。

XML ドキュメントを応答として受信すると、PHP 出力を受信して​​表示するだけでなく、ページ上の複数の場所を更新できるようになります。

この例では、データベースから受け取った情報を使用して複数の 要素を更新します。

ドロップダウン リストで名前を選択します ユーザーを選択します: Peter Griffin Lois Griffin Joseph Swanson Glenn Quagmire

この列は 4 つの要素で構成されます:

MySQL データベース シンプルな HTML フォーム JavaScript PHP ページ

データベース

が入りますこの記事の例で使用されるデータベースは次のようになります:

id FirstName LastName Age Hometown Job
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ドキュメントとして出力します
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート