MW211 EXIT

devlog
jQuery/Ajax入門のつまづき
2012年01月05日
前出の通り、
┌──────────────────────────────────────┐
│$(function() {                                                              │
│  setInterval(function(){                                                   │
│      $("#a").parent().load("ajax.php #a");                                 │
│    },                                                                      │
│    3000  // 3秒でリロード                                                  │
│  );                                                                        │
│});                                                                         │
└──────────────────────────────────────┘
だったり
┌──────────────────────────────────────┐
│$(function() {                                                              │
│  setInterval(                                                              │
│    function(){                                                             │
│      $.get(                                                                │
│        "ajax.php",                                                         │
│        function(data){                                                     │
│          $("#a").html($("#a", data).html());                               │
│        }                                                                   │
│      );                                                                    │
│    },                                                                      │
│    3000  // 3秒でリロード                                                  │
│  );                                                                        │
│});                                                                         │
└──────────────────────────────────────┘
だったりして、簡単にreload的なことができる。
#「ajax.php」ってところが、自身のファイル名になる。

基本reloadだからレイアウトもまったく一緒で簡単簡単、…なんて思っていたら
大きな落とし穴に嵌ってしまった。
(しかも、IEだけ現象が発生するというタチの悪いパターン)

結論から言うとメモリリーク。
自身を呼び出すのだが、その自身は自身を呼び出す為のAjaxタイマを実装してるわけだ。
子が孫を呼び、孫が曾孫を呼ぶ。
そりゃメモリリークもするかもね。

ってことで、自身を迂闊にAjaxタイマではreloadしちゃダメなんだね。

こういう時には、従順なそれ用のphpファイルを呼ぶようにしなきゃってことさ。
分類:注意、jQuery