2016-08-05 3 views
0

私は検索機能がGoogleのように見える、それは動作する方法は誰かが検索ページを取得するようなもので、サーバはjsonファイルを送信する。ここにはオブジェクト名とIDが含まれているので、同様の名前がポップアップします。ユーザーが1つの結果をクリックすると、関連付けられたIDはpostメソッドを使用して関連付けられたページにユーザーを誘導するための参照になります。Javascript:ユーザーが同じページに再度アクセスしたときにJsonファイルが再送信されませんか?

問題は、サーバーがデータベースとjsonfileを更新したにもかかわらず、ユーザーが新しいオブジェクトをnortherページに挿入した後、ユーザーが検索ページに戻ると、jsonファイルが再度送信されないためです。検索結果に新しく挿入されたオブジェクト名が表示されません。だから私はこれをどうやって解決できるか疑問に思った。

以下のコードは、jsonファイルを送信する検索ページのコードです。

<script> 
    var obj; 
     $.getJSON('obdatabase.json', function(obj) { 
      obj=obj; 
     }); 
    // some code for search. 
</script> 

答えて

2

これは、ブラウザによってキャッシュされていることを意味しますか?簡単な解決策は、ユニークなクエリーストリングパラメータを含めることです:

<script> 
var obj; 
    $.getJSON('obdatabase.json?d=' + (new Date().getTime()), function(obj) { 
     obj=obj; 
    }); 
// some code for search. 
</script> 
+0

ありがとうございます、それは何ですか?d = ##はどういう意味ですか? – badbye

+0

@badbye呼び出しがブラウザによってキャッシュされているので、同じアドレスへのさらなる呼び出しのために、ブラウザは単にキャッシュからデータを提供します...あなたはそれを欺くURLにランダムな文字列(ここではdateTime)それらが異なったURLであると考えて –

+0

は、ブラウザがそのURLへの各呼び出しを、キャッシングを防ぐユニークなURLとして扱うようにします – mcgraphix

2

もう少しコードが役に立ちました。
jsonのレスポンスがキャッシュされていると推測しています。
データ型 'json'でjQuery.ajax関数を使用し、falseをキャッシュする方法があります。

$.ajax({ 
 
    url: "obdatabase.json", 
 
    dataType :"json", 
 
    cache:false 
 
});

注:内部キャッシュ:偽は@mcgraphixのソリューション

0

のようなURLにランダムな数字を追加することによって行われるcomplete機能にあなたのAJAXコールバックを転送し、それより一貫性があります

<script> 
     var obj; 
     $.getJSON('obdatabase.json').complete(function(data){ 
       console.log(data.responseText); 
       console.log(JSON.parse(data.responseText)) // obj 

     }) 
    // some code for search. 
</script> 
関連する問題