現在下記のようなコードを書いて、HTMLを読み込む処理を行おうとしています。
function LoadHtml(id , uri)
{
if(!XmlsReq)return;
XmlsReq.open('GET',uri);
XmlsReq.send(null);
XmlsReq.onreadystatechange=function(){
alert("piyo");
if(XmlsReq.status==0 || XmlsReq.readyState==4 && XmlsReq.status==200)
{
alert("hoge");
document.getElementById(id).innerHTML=XmlsReq.responseText;
}
}
document.getElementById(id).innerHTML=XmlsReq.responseText;
}
これはHTTPサーバ上で動かすとちゃんと動作し、
またHTTPステータスコードが0になるローカルでもfirefoxなら動くのですが、
IE7で試してみたところ、動作しません。
原因を探してみたところ、XmlsReq.send(null);までは実行されておりalert("piyo")が表示されないことから、
どうもonreadystatechangeイベントが検出されていないような動きをしています。
ローカルのIE7環境でちゃんと動作させるにはどうしたら良いか、分かる方居ましたら教えて下さい。
No.4ベストアンサー
- 回答日時:
ローカルファイル(file://のurl)のときは、status を返すプログラム(http server)を経由してないので常にstatus == 0 です。
これは、ブラウザによりません。実行順については、既に指摘のあるとおり、open前に(最低でもsend前に)、onreadystatechangeをセットしておかないと、ローカルでの読み込みは次を実行するまえに終わってるので、つまりonreadystatechangeは、発生完了済みなので、補足されなくなります。
ネットワーク経由だと、どうしてもタイムラグがあるから、補足できていたのでしょう。
静的テキストを読みとるだけなら、readyState==4 だけ補足すれば、おおむね(ローカル、http経由を問わず)、受信出来るようです。
参考:miniajax 超最短スクリプト
http://www.bigbold.com/snippets/posts/show/2025
ブラウザ別、実行状況は、とりあえず、こちらを参考にするとよいかもしれません。
http://jsgt.org/ajax/ref/test/response/responset …
No.3
- 回答日時:
> IEはreadystateが0で、statusが200です。
あー。。。。readyStateが4でstatusが0だったかも。。。m(_ _)m
ライブラリに任せてるので結構忘れてます。ブラウザのバージョンでも違ったりしますし。
openの前にonreadystatechangeをセットすると、
open、送信開始、送信完了、受信完了で4回呼び出されるので、
readyStateをチェックせずにstatusだけでチェックしてたら、4回実行されるかもしれません。
No.2
- 回答日時:
> alert("piyo")が表示されないことから、
失礼しました。そっちの方ですか。
onreadystatechangeのセットが遅すぎます。
openの前にセットして下さい。
No.1
- 回答日時:
IEはreadystateが0で、statusが200です。
キャッシュファイルを読んでいる場合は、statusが302になることがあります。(全ブラウザ共通)
statusコードの種類は、「HTTP ステータスコード」で検索して下さい。
404 FileNotFoundとかのアレです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
要素内を常に一番下を表示させたい
-
JavascriptからPHPへのAjax通信...
-
カンマ区切りのデータを配列に...
-
AjaxでJSONを受信すると、文字...
-
階層別の組織図の自動作成について
-
tableのtr要素をドラッグ&ドロ...
-
Javascriptを使ってQRコード読...
-
google maps api v3のルート検索
-
googleMapでアイコン変更すると...
-
jQueryのアコーディオン一番目...
-
jQueryでスライドショー作成(無...
-
JavaScriptでtabindexの変更っ...
-
Googleマップのピンをクリック...
-
EUC-JPに対応しているjQueryを...
-
.txtファイルの読み込み
-
一定時間ごとに表示内容を切り...
-
パソコンで動くjavascriptがス...
-
readyStateが4にならない原因
-
【再質問】計算(入数*単価)...
-
jQueryを使いformでsubmitした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQuery 並列load処理
-
AJAXでのリロードに関して
-
ある条件の画像のみ表示を切り...
-
jQueryで、複数条件の絞り込み機能
-
要素内を常に一番下を表示させたい
-
ローカルでのonreadystatechang...
-
JQueryでAjax通信をキャンセル...
-
繰り返し処理のシンプルな書き方
-
Jquery で on/offボタンの実装...
-
jqueryでリンクを無効にしたあ...
-
【javascript文法】 prototype...
-
jqueryのgetでJSPを呼び出したい
-
階層別の組織図の自動作成について
-
JavaScriptでtabindexの変更っ...
-
Javascriptを使ってQRコード読...
-
readyStateが4にならない原因
-
SQLのmaxで求めた値を変数に代...
-
インラインフレームを自動更新...
-
AjaxでJSONを受信すると、文字...
-
変数にドットをいれることはか...
おすすめ情報