ある場所にonMouseoverで
ツールチップのようにデータを
XMLHttpRequestを使用して読み込み、表示しています。
読み込みは
getPage('xxx.php?id=$id')
というようにPHPを使用してDBを読み取り、
該当のIDの情報を読み出しているのですが、
この情報が編集されることがあります。
しかし、一回開いてしまうと、キャッシュが効いているのか、内容を編集しても編集後の内容を取ってくれません。
テストをした結果ブラウザを閉じるか、キャッシュを削除すれば又最新の情報を表示してくれるのですが、
読み込むごとに最新の情報にアクセスする(キャッシュを使用しない)方法はないでしょうか。
ブラウザはIEを使用しています。
よろしくお願いします。
以下ソース
function getPage(pageURL) {
document.charset='EUC-JP';
if(document.all){
rx = event.clientX + document.body.scrollLeft;
ry = event.clientY + document.body.scrollTop;
}else{
rx = NNX;
ry = NNY;
}
xmlhttp = createXMLHttp();
if (xmlhttp)
{
xmlhttp.onreadystatechange = setPageData;
xmlhttp.open('GET', pageURL,true);
xmlhttp.send(null);
}else{
alert("XMLHttpRequest失敗");
}
}
function setPageData()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
opentext( [xmlhttp.responseText] ,rx,ry);
//↑表示用ルーチンに受け渡しているだけなので割愛
}
}
// XMLHttpsオブジェクト作成
function createXMLHttp()
{
try{
return new ActiveXObject ("Msxml2.XMLHTTP");
}catch(e){
try {
return new ActiveXObject ("Microsoft.XMLHTTP");
}catch(e){
try {
return new XMLHttpRequest();
}catch(e) {
return null;
}
}
}
return null;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
PHP 側でキャッシュ対策しているとのことですが、私が使用しているコードを示します。
// 日付が過去
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// 常に修正されている
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
上記コードを持った PHP プログラムに対して IE6 から XmlHttpRequest でリクエストを行った場合に常に最新の情報を取得できています。
この場合、必須なのは Expires ヘッダになります。他は主に Proxy 対策として働きます。
参考URL:http://jp2.php.net/header
この回答への補足
自己解決レスです。
If-Modified-Since を入れたところ、毎回WEBを見るようになりました。
xmlhttp.onreadystatechange = setPageData;
xmlhttp.open('GET', pageURL, true);
xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
xmlhttp.send(null);
参考URL:
http://www.semblog.org/msano/archives/000386.html
回答を頂いた方、貴重なお時間を割いていただきましてありがとうございました。
ご回答ありがとうございます。
私の入れているコードは以下のとおりです。
header("Content-Type: text/html; charset=EUC-JP");
header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
これでダメでした。
No.1
- 回答日時:
環境がないので憶測ですが、
たとえばリクエストのURLをブラウザで直接入力してみたらどうですか?
キャッシュされてませんか?
そうだとすれば、リクエストがキャッシュされないようにphpを改造するしかないですね。
キャッシュさせない方法は、ネットで探せるのでご自分でお調べ下さい。
回答ありがとうございます。
キャッシュを保存しないような設定はPHPの呼び出し側で入れています。
ブラウザで直接URLを開いたところ、ちゃんと内容は更新されていました。
もちろん更新さえされていればonMouseoverで見ても情報は更新されますが、ユーザーに一々このような作業を強いるわけには行きませんので、違う方法はありませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
XMLHttpRequestでウェブページ取得
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
jQueryの :not() .not() が有効...
-
javascript(jQuery)でセル内...
-
JavaScript で "..." とされた部分
-
JAvaScriptの外部ファイルの記...
-
jslintのエラーについて質問
-
これも関数ですか?
-
関数名をテキストから読み込む...
-
idを使わずにonclickで自身の要...
-
ページ内に複数表がある場合のT...
-
functionから別のfunctionを実...
-
setTimeoutで、止まらない
-
同じIDで定義した要素の配列を...
-
ASP.NETのコントロールの値をJa...
-
ASP+アクセスでのSQLコメントに...
-
javascriptを用いて作成された...
-
C#OpenCv V4にのエラーに関する...
-
<a>タグのテキストを取得
-
javascriptで文字挿入でtoggle...
-
【正規表現】【javascript】CR...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
jQueryの :not() .not() が有効...
-
処理前の「お待ちください」
-
jslintのエラーについて質問
-
XMLHttpRequestでキャッシュを...
-
クリックすると上に開くアコー...
-
コードをスマートにさせたい。
-
関数名をテキストから読み込む...
-
jqueryの変数を関数の外に出す方法
-
シューティングゲームの作り方
-
要素名がスペースを含む場合のj...
-
getElementByIdを使用したグロ...
-
XMLHttpRequestオブジェクトが...
-
jQueryが読み込めない
-
Ajaxでデータベース(PostgreSQL)
-
setTimeoutで、止まらない
-
jQueryでzipを解凍読み込みする...
-
CDの曲をケータイのSDに移す
おすすめ情報