jQueryのajaxとloadの違いを教えてください
jQueryのajaxとloadの違いを教えてください キーワードを入力したらkeyupに合わせて通信して表示するプログラムを作っています jQueryのajaxを使って作っていたのですが 知恵袋で質問したら2通りの答えが返ってきたのです。 ajax-------------- $.ajax({ type: "POST", url: "keyword.php", data: { "keyword":keyword }, success: function(data){ if(data != '') { document.getElementById("disp").innerHTML = data; -------------------- load--------------- $(#'keyword').keyup(function(){ keyword=$(#'keyword').val(); $('#disp').load('keyword.php', {keyword:keyword}); } ----------------- 両方とも試してみたら思った通りの動作をするのですが この両者の違いは何でしょうか? 勉強している本にはajaxを使っていたのでそれにならっていたのですが loadの方がコードが短いので使いやすそうです。 メリットデメリット、向き不向きがあるのであれば教えてください。 よろしくお願いします
JavaScript・8,959閲覧
ベストアンサー
$.load()は、いわゆる「jQuery Ajaxショートハンドメソッド」で、内部的に$.ajaxメソッドを呼んでいます。 ($.getJSON()メソッドも同様) $.ajax()メソッドには多数のオプションがあり、$.load()や$.getJSON()はそれを自動設定してくれる便利なメソッド、ってわけ。 だだ、仕様をよく見て。 ショートハンドメソッドには、エラー発生時のコールバックメソッドと、読込開始時のメソッドの記述がないのに気づいた? 要するに、ショートハンドでは、Ajaxコールの開始とエラー処理を記述できない、ってことです。 インターネットでAjaxコールをやってみればわかるけど、環境によっては、読み込みの遅延や、ロードエラーが多発する。 $.loadでは、当然、何のアクションも実行されないわけで、音信普通に??な多数のユーザが「読込み」ボタンを連打したりすると、大変なことになる。 WebサーバがDBアクセスなどを行っている場合、すぐサーバダウンに直結する。 なので、結論。 ■$.load()はインターネットで使う場合、Ajax読込開始時の対策(メッセージや画面のディム化)や、タイムアウトによる画面復帰処理を万全に行わないと、百発百中サーバを落とす。最近レンサバで多いのよコレが。 ならばいっその事、全部$.ajax()メソッドでやったほうが早いです。 ■イントラネットなど、アクセスが高速、かつユーザが限定されている場合は、記述が簡単なので大いに使おう。 です。以上。
1人がナイス!しています
質問者からのお礼コメント
ありがとうございます!!リスクが事前にわかってよかったです。ただ、記述の短さからloadを安易に使うところでした・・・助かりました。
お礼日時:2012/2/27 23:31