現在下記のようなコードを書いて、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で質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
要素内を常に一番下を表示させたい
-
jqueryを使って非同期通信で10...
-
JavascriptからPHPへのAjax通信...
-
同一ページ移動時ハンバーガー...
-
Googleマップに複数のピンを立...
-
変数の内容を別functionに渡したい
-
【再質問】計算(入数*単価)...
-
Selenium4でボタンをクリックで...
-
パソコンで動くjavascriptがス...
-
階層別の組織図の自動作成について
-
jQueryのblockUIをformのボタン...
-
jQueryでloadした部分に.jsが効...
-
jquery.csv2table.jsに検索窓
-
jQueryを使いformでsubmitした...
-
<input>のvalue値をプルダウン...
-
Selenium Basicの件
-
インラインフレームを自動更新...
-
XHTMLで外部JSファイルを読み込...
-
jQuery toggle() 戻るで開いた...
-
jQueryで追加した要素がマウス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルでのonreadystatechang...
-
要素内を常に一番下を表示させたい
-
jqueryでリンクを無効にしたあ...
-
jqueryのgetでJSPを呼び出したい
-
外部ファイルload処理完了して...
-
JQueryでAjax通信をキャンセル...
-
ある条件の画像のみ表示を切り...
-
Jquery で on/offボタンの実装...
-
AJAXでのリロードに関して
-
jqueryを使って非同期通信で10...
-
コールバック中の変数操作
-
Selenium4でボタンをクリックで...
-
Javascriptを使ってQRコード読...
-
JavascriptからPHPへのAjax通信...
-
IndexedDB を使ってファイルア...
-
同一ページ移動時ハンバーガー...
-
JavaScriptでtabindexの変更っ...
-
jQueryを使いformでsubmitした...
-
SQLのmaxで求めた値を変数に代...
-
カンマ区切りのデータを配列に...
おすすめ情報