• 締切済み

JQueryを用いたJsonとの非同期通信について

下のソース //画面構築完了後 $(function() { //ボタンのクリックイベントで $("#btn_1").click(function(){ //data/sample.jsonのデータを取得し、jsonというオブジェクトに入れる $.getJSON("fdas.json", function(json){ var rows = ""; //テーブルとして表示するため、htmlを構築 //for (i = 0; i < json.length; i++) { rows += "<tr>"; rows += "<td>"; for (var kaey in json) { rows += (json[kaey]); } rows += "</td>"; rows += "</tr>"; //} //テーブルに作成したhtmlを追加する $("#tbl").append(rows); }); }); }); このソースに <input id="btn_1" type="button" value="データ取得" /> を使ってボタンを押しているのですが、FirefoxだとJsonのデータを更新してから押してもデータが変更されず、ChromeだとF5とかを幼くても更新されます。 ブラウザによって挙動が違うのはソースが間違っているからですか? それともJsにもHTML5やCSS3のように、対応ブラウザなどがあるのでしょうか??? また自分はまだよくわかっていないのですが、prototype.jsを用いた場合のほうが簡単だということがありましたらそちらも教えていただけると幸いです 教えてください!!!

みんなの回答

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.1

読み込んでるのはキャッシュです。(Firefoxの場合) 従って、http://blog.remora.cx/2011/10/trap-of-jquery-getjson.html こちらにも書かれている通り、 $("#btn_1").click({t:(new Date()).getTime()},function(){ //data/sample.jsonのデータを取得し、jsonというオブジェクトに入れる $.getJSON("fdas.json", function(json){ var rows = ""; //テーブルとして表示するため、htmlを構築 rows += "<tr><td>"; jQuery.each(json,function(key,value){ rows += value; }); rows += "</td></tr>"; //テーブルに作成したhtmlを追加する $("#tbl").append(rows); }); }); こんな感じで良いと思います。