プロが教えるわが家の防犯対策術!

javascriptからAjaxでデータを取得して表示しているのですが、
最初のデータ表示は正しいのですが、2回目以降の再表示で新しいデータが表示できません(取得出できません)。

該当部分のみ抜き出すと質問の最後に書いたコードなのですが、
再表示したときに、data['flag']の値が変わりません、
(例えば、自分自身でデータを更新した直後や他の人が更新した後)

たとえば、
http://server/Controller/find?id=1234
を実行すると、思ったデータがダウンロードできるので、
php側のプログラムは正常なのですが、
$.getで取得したdata内の情報が最初のデータのままで変わらないという状況です。

何か考え方が間違えているのか、処理が足りないのか教えてください。

function find_product() {
var id = $("#id").val();

$.get(
"Controller/find?id=" + id,
function(data) {
if ( data['name'] == null ) {
alert('見つかりませんでした。');
reset();
return;
}
$('.name').text(data['name']);

if ( data['flag'] == '1' ) {
$('.flag').prop("checked", true);
} else {
$('.flag').prop("checked", false);
}
}
);

質問者からの補足コメント

  • うーん・・・

    更新しているのはflagの方です。
    1回目は、flagの値が正しいのですが、2回目以降は、変わっている値のはずが同じ値が返ってきます。

    "Controller/find?id=" + id
    のところで、
    "Controller/find?id=" + id + "&nowtime=" + nowtime
    という具合に毎回、重複しないURLを指定するようにすると、
    とりあえず解決しました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/06/06 05:49

A 回答 (2件)

ああ、キャッシュ対策ですね



http://d.hatena.ne.jp/hasegawayosuke/20090925/p1

にあるようにcacheをfalseにすれば自動で時間を付加してくれるみたいです
またbeforeSendにリクエストヘッダで If-Modified-Since を設定するとよいようです
    • good
    • 0
この回答へのお礼

ありがとうございます。
無理やり対策していたのですが、
本来の方法と理屈がよくわかりました。

お礼日時:2016/06/06 15:13

id="id"のdivかなにかを参照してるの?


その箇所を更新してる?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!