ASPチュートリアル

ASPホーム

WPチュートリアル

Webページの紹介 WebPages Razor Webページのレイアウト Webページフォルダ WebPages Global Webページフォーム Webページオブジェクト Webページファイル Webページデータベース Webページヘルパー WebPages WebGrid Webページチャート Webページの電子メール Webページのセキュリティ Webページの公開 Webページの例 Webページクラス

ASP.NET Razor

かみそりのイントロ かみそりの構文 Razor C#変数 Razor C#ループ Razor C#ロジック RazorVB変数 かみそりVBループ RazorVBロジック

ASPクラシック

ASPイントロ ASP構文 ASP変数 ASP手順 ASP条件文 ASPループ ASPフォーム ASPCookie ASPセッション ASPアプリケーション ASP #include ASP Global.asa ASP AJAX ASPメール ASPの例

ASPリファレンス

ASPVB関数 ASPVBキーワード ASP応答 ASPリクエスト ASPアプリケーション ASPセッション ASPサーバー ASPエラー ASPファイルシステム ASP TextStream ASPドライブ ASPファイル ASPフォルダー ASP辞書 ASP AdRotator ASP BrowserCap ASPコンテンツリンク ASPコンテンツローテーター ASPクイック参照

ADOチュートリアル

ADOイントロ ADOコネクト ADOレコードセット ADOディスプレイ ADOクエリ ADOソート ADO追加 ADOアップデート ADO削除 ADO Demo ADOスピードアップ

ADOオブジェクト

ADOコマンド ADO接続 ADOエラー ADOフィールド ADOパラメータ ADOプロパティ ADOレコード ADOレコードセット ADOストリーム ADOデータ型

ASP AJAX

AJAXは、ページ全体をリロードせずに、Webページの一部を更新することを目的としています。


AJAXとは何ですか?

AJAX =非同期JavaScriptおよびXML。

AJAXは、高速で動的なWebページを作成するための手法です。

AJAXを使用すると、バックグラウンドでサーバーと少量のデータを交換することにより、Webページを非同期で更新できます。これは、ページ全体をリロードすることなく、Webページの一部を更新できることを意味します。

従来のWebページ(AJAXを使用しない)は、コンテンツが変更された場合にページ全体をリロードする必要があります。

AJAXを使用するアプリケーションの例:Googleマップ、Gmail、Youtube、およびFacebookのタブ。


AJAXのしくみ

AJAX


AJAXはインターネット標準に基づいています

AJAXはインターネット標準に基づいており、次の組み合わせを使用します。

  • XMLHttpRequestオブジェクト(サーバーと非同期でデータを交換するため)
  • JavaScript / DOM(情報を表示/操作するため)
  • CSS(データのスタイルを設定するため)
  • XML(データを転送するための形式としてよく使用されます)

AJAXアプリケーションは、ブラウザーやプラットフォームに依存しません。



Googleサジェスト

AJAXは、2005年にGoogleによってGoogleSuggestで人気を博しました。

Googleサジェスト はAJAXを使用して非常に動的なWebインターフェイスを作成しています。Googleの検索ボックスに入力を開始すると、JavaScriptがサーバーに文字を送信し、サーバーがサジェストのリストを返します。


今日からAJAXの使用を開始

ASPチュートリアルでは、AJAXがページ全体をリロードせずにWebページの一部を更新する方法を示します。サーバースクリプトはASPで記述されます。

AJAXについて詳しく知りたい場合は、AJAXチュートリアルにアクセスしてください。

AJAXASPの例

次の例は、ユーザーが入力フィールドに文字を入力しているときに、WebページがWebサーバーと通信する方法を示しています。

Start typing a name in the input field below:

First name:

Suggestions:



例の説明

上記の例では、ユーザーが入力フィールドに文字を入力すると、「showHint()」という関数が実行されます。

この関数は、onkeyupイベントによってトリガーされます。

HTMLコードは次のとおりです。

<html>
<head>
<script>
function showHint(str) {
    if (str.length == 0) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "gethint.asp?q=" + str, true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>

コードの説明:

まず、入力フィールドが空かどうかを確認します(str.length == 0)。そうである場合は、txtHintプレースホルダーの内容をクリアして、関数を終了します。

ただし、入力フィールドが空でない場合は、次のようにします。

  • XMLHttpRequestオブジェクトを作成します
  • サーバー応答の準備ができたときに実行される関数を作成します
  • サーバー上のASPファイル(gethint.asp)にリクエストを送信します
  • qパラメータが追加されていることに注意してくださいgethint.asp?q = "+ str
  • str変数は、入力フィールドの内容を保持します

ASPファイル-「gethint.asp」

ASPファイルは名前の配列をチェックし、対応する名前をブラウザに返します。

<%
response.expires=-1
dim a(30)
'Fill up array with names
a(1)="Anna"
a(2)="Brittany"
a(3)="Cinderella"
a(4)="Diana"
a(5)="Eva"
a(6)="Fiona"
a(7)="Gunda"
a(8)="Hege"
a(9)="Inga"
a(10)="Johanna"
a(11)="Kitty"
a(12)="Linda"
a(13)="Nina"
a(14)="Ophelia"
a(15)="Petunia"
a(16)="Amanda"
a(17)="Raquel"
a(18)="Cindy"
a(19)="Doris"
a(20)="Eve"
a(21)="Evita"
a(22)="Sunniva"
a(23)="Tove"
a(24)="Unni"
a(25)="Violet"
a(26)="Liza"
a(27)="Elizabeth"
a(28)="Ellen"
a(29)="Wenche"
a(30)="Vicky"

'get the q parameter from URL
q=ucase(request.querystring("q"))

'lookup all hints from array if length of q>0
if len(q)>0 then
  hint=""
  for i=1 to 30
    if q=ucase(mid(a(i),1,len(q))) then
      if hint="" then
        hint=a(i)
      else
        hint=hint & " , " & a(i)
      end if
    end if
  next
end if

'Output "no suggestion" if no hint were found
'or output the correct values
if hint="" then
  response.write("no suggestion")
else
  response.write(hint)
end if
%>

AJAXは、データベースとの対話型通信に使用できます。


AJAXデータベースの例

次の例は、WebページがAJAXを使用してデータベースから情報をフェッチする方法を示しています。


Customer info will be listed here...


説明された例-HTMLページ

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

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

<form>
<select name="customers" onchange="showCustomer(this.value)">
<option value="">Select a customer:</option>
<option value="ALFKI">Alfreds Futterkiste</option>
<option value="NORTS ">North/South</option>
<option value="WOLZA">Wolski Zajazd</option>
</select>
</form>
<

<div id="txtHint">Customer info will be listed here...</div>

</body>
</html>

ソースコードの説明:

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

顧客が選択された場合、showCustomer()関数は以下を実行します。

  • XMLHttpRequestオブジェクトを作成します
  • サーバー応答の準備ができたときに実行される関数を作成します
  • サーバー上のファイルにリクエストを送信します
  • パラメータ(q)が(ドロップダウンリストの内容とともに)URLに追加されていることに注意してください。

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.4.0"
conn.Open(Server.Mappath("/datafolder/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<tr><td><b>" & x.name & "</b></td>")
    response.write("<td>" & x.value & "</td></tr>")
  next
  rs.MoveNext
loop
response.write("</table>")
%>