- ベストアンサー
Ajaxが機能しない
IE6.02を使っています。 次のようにAjaxのテストをしようとしたのですが、 「data.txt」に入っている文字(aaa)が表示されませんでした。 スクリプトのエラーも出てないようなのですが、なにが原因なのでしょうか? <html> <head> <meta http-equiv="content-type" content="text/html;charset=shift_jis"> <title>XMLHttpRequest()の基本(Win IEの場合)</title> <script type="text/javascript"><!-- function loadTextFile() { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); httpObj.onreadystatechange = statusCheck; httpObj.open("GET","data.txt",true); httpObj.send(null); } function statusCheck() { if ((httpObj.readyState == 4) && (httpObj.status == 200)) { displayData(); } } function displayData() { document.ajaxForm.result.value = httpObj.responseText; } // --></script> </head> <body> <h1>XMLHttpRequest()の基本 (Win IEの場合)</h1> <form name="ajaxForm"> <input type="button" value="読み込み" onClick="loadTextFile()"><br> <textarea name="result" cols="40" rows="5"></textarea> </form> </body> </html>
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
data.txtに直接アクセスできますか? その時のHTTPヘッダ等は正しいですか? 後は・・・俺なら・・・ function statusCheck() { /* 網を張って変化を見る。*/ alert("readyState:" + httpObj.readyState + "\n" + "status:" + httpObj.status); if ((httpObj.readyState == 4) && (httpObj.status == 200)) { displayData(); } } とか網を張ってみるかもしれません。
その他の回答 (6)
- NickAomori
- ベストアンサー率40% (11/27)
httpObj = new ActiveXObject("Microsoft.XMLHTTP"); を以下に替えてみてはいかがですか? httpObj = new ActiveXObject("Msxml2.XMLHTTP");
お礼
ご返答ありがとうございます。 >httpObj = new ActiveXObject("Msxml2.XMLHTTP"); こちらの方法でも表示されました。 ただ上の方法でも[666]で表示できたので、 何が原因なのか、たまたまなのか混乱してます・・・
- shirayukix
- ベストアンサー率43% (90/207)
読み取りだけだから444でもいいはずですね。 何が起きてるんでしょう。
お礼
ご返答ありがとうございます。 今、もう一度試してみたら[666]でもできました・・・ こうやってころころ変わるとほんとに厄介ですね・・・ ほんとに何なのか分かりません。
- susie-t
- ベストアンサー率86% (37/43)
(httpObj.readyState == 4) は外さないでください。 if (httpObj.readyState == 4){ displayData(); } ということ。 (readyStateの4は受信完了(受信エラーも含む)を意味します。onreadystatechangeに設定された関数は、readyStateに変化があった場合に実行されます。) ただ、サーバ経由でやっているなら元のコードでもよさそうなんですが・・・。 上記コードでローカルで表示されますか?
お礼
ご返答ありがとうございます。 if (httpObj.readyState == 4){ displayData(); } をローカルで試したら表示されました(aaa) ただ同じ方法でweb上だと未だ表示されません・・・ うーん、何が原因なのか・・・
- himajin100000
- ベストアンサー率54% (1660/3060)
当方環境では ANHTTPD 1.4.2 + IE 7 on Windows XP SP2 再現しない(正常に表示される)
お礼
ご返答ありがとうございます。 こちらの環境はWindows2000 SP3です。 アップするサーバはApache1.3系です。
- susie-t
- ベストアンサー率86% (37/43)
ローカルで試したいのなら httpObj.status == 200 という条件は外してください。 HTTPステータスコードはWEBサーバ経由でないと取得できません。(IE6でローカルだと0)
お礼
ご返答ありがとうございます。 作業はWEB上でやっています。 >if ((httpObj.readyState == 4) && (httpObj.status == 200)) この条件を外して試したところ、 「この作業を完了するのに必要なデータは、まだ利用できません」 というエラーが4つほどでてきます。これで何か分かることはあるのでしょうか?
- shirayukix
- ベストアンサー率43% (90/207)
Webサーバ上に置いていますか? HTMLとdata.txtを同じフォルダに置いていますか? JavaScriptは有効にしていますか?
お礼
ご返答ありがとうございます。 WebサーバにFFFTPでアップロードして、同じフォルダに置き JavaScriptは有効です(間違った文法書くと、通知する設定ならちゃんとエラーがでます)
お礼
ご返答ありがとうございます。 「data.txt」に直接アクセスしたら真っ白ページだったので もしかしたらと思い、「data.txt」のパーミッションを[777]に変更したら表示されました。 あれ?データ関係は[666](呼び出し、書込み)だけでよかった気がするのですが、、自分の認識が間違ってるのかなぁ?