AJAXデータベース



AJAX を使用してデータベースと対話的に通信できます。


AJAX データベースの例

次の例は、Web ページが AJAX を通じてデータベースから情報を読み取る方法を示します:


顧客情報がここにリストされます...


例の説明 - HTML ページ

ユーザーが上のドロップダウン リストで顧客を選択すると、「showCustomer()」という名前の関数が実行されます。この関数は、「onchange」イベントによってトリガーされます:

<!DOCTYPE html>
<html>
<head>
<script>
function showCustomer(str)
{
if (str==" ")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// IE7 以降、Firefox、Chrome、Opera、Safari 用のコード
xmlhttp=new XMLHttpRequest( );
}
else
{// IE6、IE5 のコード
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState== 4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcustomer.asp?q="+str ,true );
xmlhttp.send();
}
</script>
</head
<body>

<form>
<select name="customers" onchange="showCustomer(this .value )">
<option value="">顧客を選択してください:</option>
<option value="ALFKI">Alfreds Futterkiste</option>
<option value="NORTS "> ;北/南</option>
<option value="WOLZA">ウォルスキー・ザジャズド</option>
</select>
</form>
<br>
<div id= "txtHint ">顧客情報がここにリストされます...</div>

</body>
</html>

ソースコードの説明:

顧客が選択されていない場合 (str.length==0)、この関数は txtHint プレースホルダーをクリアして関数を終了します。

顧客が選択されている場合、showCustomer() 関数は次の手順を実行します:

  • XMLHttpRequest オブジェクトを作成します

  • サーバー応答の準備ができたときに実行する関数を作成します

  • にリクエストを送信しますサーバー上のファイル

  • URL (ドロップダウン リストの内容を含む) の末尾に追加されるパラメーター (q) に注意してください


ASP ファイル

経由で呼び出されるサーバー ページ上記の JavaScript は、「getcustomer.asp」という名前の ASP ドキュメントです。

"getcustomer.asp" のソース コードはデータベースに対してクエリを実行し、結果を HTML テーブルに返します:

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID = "
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB. "
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("< table>")
は、rs.Fields
response.write("<tr><td><b>" & x.name & "</b>< /td>gt;")
response.write("<td>" & x.value & "</td>gt;</tr>")
next
rs.MoveNext
loop
response.write("< ; /table>")
%>