WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ajax の解説

0:[投稿] B-Cus [2005/03/10 13:27 ][環境:なんでも なんでも]

最近はやりの ajax (http://antipop.zapto.org/docs/translations/ajax.html)
についてです。

簡単なものはできたのですが、エラー処理や非同期のリクエスト
など、ちょっと凝ったところになるとうまくいきません。

解説しているサイト (ソースがどーんと置いてあるだけではなくて)
がありましたらご紹介ください。書籍でも構いません。


1:[回答] B-Cus [2005/03/10 13:38 ]

ちなみに今は
 http://chasen.org/~taku/software/ajax/ime/
をそのまま真似ていますが、Firefox でレスポンスが返ってくる前に
キーを打つと Javascript エラーがばしばし出るのでなんとか
したい、という初歩的なレベルです。

# XML を使ってないので正確には ajax ではないですが、
# とりあえずのお勉強ということで。


2:[回答] andi [2005/03/10 18:03 ]

自分もAjax(xmlHttpRequest)の情報収集中なので備忘録ついで(こらこら)にいくつかサイトをご紹介します。

[XMLHttpRequestの使い方とか]
http://www.w3schools.com/dom/dom_http.asp
http://developer.apple.com/internet/webcontent/xmlhttpreq.html
http://web.paulownia.jp/script/xmlhttp.html

[エラー処理とか]
http://xiaoxia.exblog.jp/m2004-12-01/#1486034

[非同期関連?]
http://support.microsoft.com/default.aspx?scid=kb;ja;311730


3:[回答] B-Cus [2005/03/10 18:36 ]

ありがとうございます。

一日中 ajax で遊んだ結果、google suggest くらいなら作れるかな、
という感じになりましたが、google maps はまだまだ無理なレベルです。

とりあえずわたしも投稿後に見つけたところを貼っておきます。

 わかりやすい XMLHttpRequest の解説:
  http://www.hawk.34sp.com/stdpls/xml/xmlhttprequest.html
 リンク集:
  http://jpspan.sourceforge.net/wiki/doku.php?id=javascript:xmlhttprequest

>>1 で書いたエラーの対処や、多重化、無駄なリクエストを極力
減らすための tips 的なものがまとまっているところを探して
いるのですが、なかなか見つかりません。


4:[回答] ふじ [URL] [2005/03/10 18:52 ]

私もいじり始めたばかりで詳しくないのですが……

> Firefox でレスポンスが返ってくる前に
> キーを打つと Javascript エラーがばしばし出るのでなんとかしたい
これについては、
xmlhttp.open();
する前に xmlhttp.readyState をチェックして、0 または 4 でなければ
前の通信が実行中なので無視(なりなんなり)すれば、
とりあえず回避できそうです。

function send_request() {
 if (!xmlhttp) return;
 if (xmlhttp.readyState == 1 || xmlhttp.readyState == 2 || xmlhttp.readyState == 3){
       return;
 }
 xmlhttp.open( ***** );
 (略)
}

lock や synchronized みたいなことができればいいんですけど(できるのか?)。


5:[回答] B-Cus [2005/03/11 13:20 ]

なるほど。ただこれだと前の通信が終了しないと次のが
始まらないので、レスポンスが悪くなりますね。

google suggest ではまったくエラーがでないので、何かしら
方法があるんでしょうが。

あと、Firefox で IME を on にしたとき、
 http://chasen.org/~taku/software/ajax/ime/
は確定するまで反応がありませんが、google suggest では
未確定の文字列も保管されるのも謎です。

以下、メモ。

google suggest の解説
 http://serversideguy.blogspot.com/2004/12/google-suggest-dissected.html
ちょっとだけ読みやすくした google suggest のソース
 http://www.fastbugtrack.com/misc/google/ac.js


6:[回答] ふじ [URL] [2005/03/11 14:32 ]

一つの XMLHttpRequest オブジェクトを使い回すのではなくて、
リクエストごとに生成するという手もありそうです。
# 上記の http://www.fastbugtrack.com/misc/google/ac.js でもそうなっているみたいですが

手元で試した限りでは、この方法でもエラーを回避できました。

function create_xmlhttp(){
   var xmlhttp = false;
   (略)
    return xmlhttp;
}

function send_request(){
   var x = create_xmlhttp();
   x.open( ****** );
   (略)
}


7:[回答] andi [URL] [2005/03/11 16:39 ]

> 未確定の文字列も保管されるのも謎です。

解析してみて、以下の関数がそれを可能にしていることが分かりました。
function setupKeydown1(){
 if(document.createEventObject) {
   var y=document.createEventObject();
   y.ctrlKey=true;
   y.keyCode=70;
   document.fireEvent("onkeydown",y)
 }
}

> ふじさん(私信)

Blosxomユーザなのですね。
私のサイトもBlosxomで構築していますので、仲間?ですね。
プラグインも幾つか配布しているので覗いてみて下さい。


8:[完了] B-Cus [2005/03/18 14:13 ]

時間がなくて何もできていないのですが、教えていただいたことは
後日試してみます。すいません。

本題の解説サイトですが、みなさん ajax でどこまでおもしろい
ことができるかを模索中の段階のようで、現時点ではこれといった
ものはないようですね。

というわけで、とりあえず完了とさせていただきます。
ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World