Ajaxは、XMLHttpRequestという命令を利用して、この命令が含まれる関数が実行されたときにデーターを受信するというのが根幹である。これまでの、JavaScriptプログラミングと異なる最大のポイントは、''XMLHttpRequest命令でサーバー上のデーターを取得できる''という点である。非同期通信という言葉がよく使われるが、DHTMLの延長として考えた方がわかりやすい。XMLHttpRequestオブジェクト生成のコードを書く。IE7未満では、ActiveXObjectでこれを実装する。これにより、request変数に、ajaxに必要な関数が入る。実際データーをよみこむと、まずreadyStateが変化する。書き換えたい部分を読み込み中の時は、読み込みアイコンにして、完了後内容をgetElementByIdなどで書き換えるといったテクニックも可能である。ほかにも変数があるが、ここでは省略して、読み込みが完了したら、callback();という関数が実行される。このresponseTextとは、読み込んだデーターを意味する。XMLの場合は、responseXMLとなる。このcallback()関数に、読み込んだデーターをパースしたり表示するなどの処理を入れる。この処理では、だいたいgetElementByIdなどでページの一部分を書き換えて、動的にページが変化しているようにみせることから、もっぱら非同期通信という言葉が使われるというしくみだ。ajaxプログラミングにおいて、はまりがちなのが、&color(Red){サブルーチンの外にajaxで読み込んだデーターの結果を出すことができない};というところである。Perlではデーターを読み込んだ後で、変数に格納して別のサブルーチンに渡して処理と言うことがよく使われる。この場合、view()関数からopen()関数を呼び出してデーターを取得するという処理を行っているが、ajaxプログラミングにおいて、こういう方法でデーターを取り出すことはできない。<IN>;という部分で、データーのパース、表示などの処理を行わなければならない。いうような処理は&color(Red){できない};ので注意。タイムアウト時の処理を別途Ajax.Responders.registerなどで記載しなければならない。別途handleAsで、Jsonとして処理したり、XMLとして処理したりするようにできる。[[dojo]]と一緒。タイムアウト時の処理は別途uu.request.timeoutで記載。Ajaxは、XMLHttpRequestという命令を利用して、この命令が含まれる関数が実行されたときにデーターを受信するというのが根幹である。これまでの、JavaScriptプログラミングと異なる最大のポイントは、''XMLHttpRequest命令でサーバー上のデーターを取得できる''という点である。非同期通信という言葉がよく使われるが、DHTMLの延長として考えた方がわかりやすい。XMLHttpRequestオブジェクト生成のコードを書く。IE7未満では、ActiveXObjectでこれを実装する。これにより、request変数に、ajaxに必要な関数が入る。実際データーをよみこむと、まずreadyStateが変化する。書き換えたい部分を読み込み中の時は、読み込みアイコンにして、完了後内容をgetElementByIdなどで書き換えるといったテクニックも可能である。ほかにも変数があるが、ここでは省略して、読み込みが完了したら、callback();という関数が実行される。このresponseTextとは、読み込んだデーターを意味する。XMLの場合は、responseXMLとなる。このcallback()関数に、読み込んだデーターをパースしたり表示するなどの処理を入れる。この処理では、だいたいgetElementByIdなどでページの一部分を書き換えて、動的にページが変化しているようにみせることから、もっぱら非同期通信という言葉が使われるというしくみだ。ajaxプログラミングにおいて、はまりがちなのが、&color(Red){サブルーチンの外にajaxで読み込んだデーターの結果を出すことができない};というところである。Perlではデーターを読み込んだ後で、変数に格納して別のサブルーチンに渡して処理と言うことがよく使われる。この場合、view()関数からopen()関数を呼び出してデーターを取得するという処理を行っているが、ajaxプログラミングにおいて、こういう方法でデーターを取り出すことはできない。<IN>;という部分で、データーのパース、表示などの処理を行わなければならない。いうような処理は&color(Red){できない};ので注意。タイムアウト時の処理を別途Ajax.Responders.registerなどで記載しなければならない。別途handleAsで、Jsonとして処理したり、XMLとして処理したりするようにできる。[[dojo]]と一緒。タイムアウト時の処理は別途uu.request.timeoutで記載。