0

このレールキャストでは、親友のベイツ氏が、一連のデータを検索、並べ替え、ページ付けできるアプリを作成するためのソリューションについて説明します。AJAX検索を実行するとき、彼はユーザーが検索ボックスに入力を入力した瞬間に検索結果を表示するソリューションを提供します。これが彼の解決策です:

$('#products_search input').keyup(function () {
  $.get($('#products_search').attr('action'), ↵ 
    $('#products_search').serialize(), null, 'script');
  return false;
});

ただし、彼は「これは簡単なデモであり、これを行うための最良の方法ではないことに注意してください。本番アプリでこのようなことを行う場合に使用できるjQueryプラグインがいくつかあります。」なぜこれが制作に適さないと彼が信じているのかについての説明を探しています。前もって感謝します!

4

1 に答える 1

1

このソリューションには2つの大きな問題があります。1つ目は、キーが押されるたびにHTTP(AJAX)リクエストを作成することです。これは、これを行うための最も効率的な方法ではありません。eval2つ目は、基本的に応答を呼び出していることですeval。悪意のあるユーザーが実行したくないコードを実行する可能性があるため、問題があります。

改善に関するいくつかの提案:

  • 適切なJSONパーサーを使用して、データをJSONとして返します。( $ .getJSONを使用できます)
  • リクエストをスロットルします-すべてのkeyUpでそれを行わないでください。タイマーを開始し、最後の1秒間にキーが押されていない場合にのみリクエストを送信します。つまり、すばやく入力する人に多くの呼び出しを行うことはありません。
  • 応答をキャッシュします。すでに何かを検索している場合は、データを2回フェッチしても意味がありません。このセッションでの以前の呼び出しとその結果を(JSオブジェクトに)メモしておきます。
于 2012-04-27T09:17:19.293 に答える