人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のソースでxmlhttpを非同期で使用したい場合はどうしたら
いいのですか?

var HOGEHOGE ={
gettest1:function gettest1(){
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
}else if (window.ActiveXObject) {
try {
return new ActiveXObject("Msxml2.XMLHTTP")
} catch(e) {
return new ActiveXObject("Microsoft.XMLHTTP")
}
}else{
return null
}
},
test2:function test2(){
var xmlhttp = HOGEHOGE.gettest1();
xmlhttp.open('POST','test.txt',false);
xmlhttp.send('');
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
return true;
}else{
return false;
}
},
test3:function test3(){
if(HOGEHOGE.test2()){
window.alert("aa")
}else{
window.alert("bb")
}
}
}
window.onload =function(){test3()}

●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:AA BB Catch Microsoft open
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● mj99
●60ポイント
<script>
var HOGEHOGE = {
 test1:function test1() {
 if (window.XMLHttpRequest) {
 return new XMLHttpRequest();
 } else if (window.ActiveXObject) {
 try {
 return new ActiveXObject("Msxml2.XMLHTTP");
 } catch(e) {
 return new ActiveXObject("Microsoft.XMLHTTP");
 }
 } else {
 return null;
 }
 },
 test2:function test2() {
 if (xmlhttp.readyState != 4) { /* 完了までは特になにもしない */
 return ;
 }
 if (xmlhttp.status == 200) {
 window.alert(xmlhttp.responseText);
 } else {
 window.alert(xmlhttp.status);
 }
 },
 test3:function test3() {
 xmlhttp = test1();
 xmlhttp.onreadystatechange = test2; /* 通信イベントの通知を受け取る関数 */
 xmlhttp.open("POST","http://q.hatena.ne.jp/list",true);
 xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 xmlhttp.send("word=a&amp;mode=rss");
 },
 xmlhttp:function xmlhttp(){ }
}
window.onload =function() { HOGEHOGE.test3(); };
</script>
<body>
</body>


xmlhttpに通信イベントを受け取る関数を設定しておいて、openの第3引数をtrueとすれば良いです。


----

HOGEHOGEの最後に、xmlhttp:function xmlhttp(){} と定義してあるのは、test1の結果を格納しておくためのダミー関数です。

HOGEHOGEの中にいれずに素直にグローバルで、var xmlhttp=HOGEHOGE.test1()と、定義しておくほう普通かも。


あと、POSTのときパラメータを飛ばすにはsetRequestHeaderが必要です。

◎質問者からの返答

firefoxで行うとxmlhttp.readyStateが

1になってreturnされるのですが、これは

問題ないのでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ