|
Ajaxの強みは何と言っても非同期通信。
自由なタイミングで通信開始できるので『多重』にもできる。
ここでハマりました。
こんな感じの関数作って、いつでも呼べる様にしたのだが…。
function httpRequest(get_or_post, target_url, funcitonReference, post_str) {
var httpObj = false;
try {
httpObj = new ActiveXObject("Msxml2.XMLHTTP");
MSXMLHTTP = true;
} catch (e) {
try {
httpObj = new ActiveXObject("Microsoft.XMLHTTP");
MSXMLHTTP = true;
} catch (E) {
httpObj = false;
}
}
if(!httpObj && typeof XMLHttpRequest != 'undefined') {
httpObj = new XMLHttpRequest();
}
if(httpObj) {
………
………
(以降、通信処理)
何故だか前の通信が終わらないと、次の通信が始まらない。
「そんな馬鹿な!」と思いつつ調べるが、そういう現象の事はどこにも書かれていない。
色んな事試して、悩む事3日。原因分かりました。
問題は、サーバ側で使ってるセッション。
session_start();
していると、きっちり処理終わらないと次の通信を受け付けない様です。
セッションの処理終わったら
session_write_close();
を呼ぶと、きっちり非同期&多重通信する様になりました。
この1行追加を探し出すのに3日か…。
まぁハマッた時なんて、こんなものだ。
※ 『javascript』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。
リンク元:
(1) : http://www.google.co.jp/search?hl=ja&q=javascript+%E9%9D%9E%E5%90%8C%E6%9C%9F%E9%80%9A%E4%BF%A1+%E5%A4%9A%E9%87%8D%E9%80%9A%E4%BF%A1&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?q=ajax+%E5%A4%9A%E9%87%8D%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
(1) : http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=5e6&q=ajax+%E9%80%9A%E4%BF%A1&start=30&sa=N
(1) : http://www.google.co.jp/search?q=XMLHTTPRequest+%E5%A4%9A%E9%87%8D&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
ページ閲覧者数:12人
[ javascript ] 一覧へ
|