- 締切済み
Ajaxでwebページの一部をリロード
Ajax超初心者です。 http://okwave.jp/qa/q7061328.html これのベストアンサーについてなんですけど、 <script type="text/javascript"> function update(){ var xhr = new XMLHttpRequest(); xhr.open("GET", "/foo.php"); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { document.getElementById("foo").innerHTML = xhr.responseText; xhr = null; } } xhr.send(null); } </script> これって例えば「1分後に自動的にリロードする」というような指示は どこを変更して指示したらいいんでしょうか。 もしこの方法ではそういう指定ができないのなら、 指定できる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- edomin7777
- ベストアンサー率40% (711/1750)
#2、3です。 「Ajax超初心者です。」と書くくらいなら、人のコードを見るよりも先に「JavaScript」と「Ajax」はどうやって非同期通信をしているのかを調べましょう。
- edomin7777
- ベストアンサー率40% (711/1750)
#2です。 質問文にあるコードを変更する前に、質問文のコードを理解する方が先のように思います。 質問文のコードは、「upload()を呼び出すと、Ajax非同期通信を利用してページの内容を書き換える処理」を定義しています。 これを実行させないと(upload()を呼び出さないと)書き換わりません。 (今のままでは、何もしません。) 一番簡単だと思うのは、「<body>」タグでonloadで呼び出す。そのときに#1さんの回答のようにする。 だと思いますが…。
- edomin7777
- ベストアンサー率40% (711/1750)
質問文に記載されているのは、update()を「定義」しているところです。 実際には、別のところでupdate()を呼びだしているはずです。 そこを、#1さんの回答に合わせて変更しましょう。
- hitomura
- ベストアンサー率48% (325/664)
setInterval() か、 対象ブラウザの関係で使えないなら代わりに setTimeout() を使いましょう。 (1) setInterval() を使う場合 ・update() を呼び出しているところを以下のように変える setInterval('update()', 60 * 1000); (2) setTimeout() を使う場合 ・update() を呼び出しているところを以下のように変える setTimeout('update()', 60 * 1000); ・update() の最後に以下を追加する setTimeout('update()', 60 * 1000);
補足
>update() を呼び出しているところを すみません、これって「update()」のところってことですか? update() を setInterval('update()', 60 * 1000); に変えればいいんですか?
補足
だめだ、全然解りません; 質問文に記載したものを<head></head.>内に記述して、 自動更新したいところを <div id="foo"></div> ではさんだだけなのですが、 update()を呼びだしている場所とかわからないです><