2011-03-03 15 views
13

私は別のSOの記事で、このコードを見て:jQuery UI Autocomplete with ASP MVCこのjavascriptの応答関数は何をしますか?

$("#CustomerID").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       type: "POST", 
       url: "/customer/search", 
       dataType: "json", 
       data: { 
        term: request.term 
       }, 
       error: function(xhr, textStatus, errorThrown) { 
        alert('Error: ' + xhr.responseText); 
       }, 
       success: function(data) { 
        response($.map(data, function(c) { 
         return { 
          label: c.Company, 
          value: c.ID 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      alert('Select'); 
     } 
    }); 

私は成功機能以外のすべてを理解しています。マップが配列をとり、ラベルと値のプロパティを持ち、新しい配列を返す新しいオブジェクトに各値をマッピングしていますが、私はresponse()が何をしているのかよくわかりません。

答えて

17

このオブジェクトは、autocompleteメソッドによってsourceという名前の関数に渡されるコールバック関数です。

は、Jquery UI Autocompleate

第三の変形、コールバックを参照して最も柔軟性を提供し、オートコンプリートに任意のデータソースに接続するために使用することができます。コールバックには次の2つの引数があります。

"term"という1つのプロパティを持つリクエストオブジェクト。現在のテキスト入力の値を参照します。たとえば、ユーザーが都市のフィールドに「new yo」と入力すると、オートコンプリートの用語は「new yo」に等しくなります。

応答コールバック.1つの引数にユーザーに提案するデータが含まれていることが必要です。このデータは、指定された用語に基づいてフィルタリングされ、単純なローカルデータ(ラベル/値/両方のプロパティを持つString-ArrayまたはObject-Array)について前述したいずれかの形式にすることができます。要求中にエラーを処理するためにカスタムソースコールバックを提供する場合は重要です。エラーが発生した場合でも、必ず応答コールバックを呼び出す必要があります。これにより、ウィジェットは常に正しい状態になります。

+0

私はそれを見逃しました。 Facepalm :) – Dismissile

+0

@david waters私たちはリクエストタームと方法を設定できますか? – bhawin

-3

元のコーダーのコードにはカスタム関数があるようです。私の知る限り、これは固有のjQuery関数ではありません。