2016-06-13 7 views
1

私は、入力しようとしているときに文字列のリストを返すajax呼び出しでJQueryオートコンプリート関数を使用しようとしています。アウト私は私のオートコンプリート機能であるwrong..Belowつもりわからinput..Notに基づいて..jqueryオートコンプリート - フィルタリングされていません

$("#domainNameId").autocomplete({ 
     source : function(request, response) { 
      console.log("in ajax "); 
      $.ajax({ 
       url : "getAllDomains", 
       type : "GET", 
       contentType : "application/json", 
       data : { 
        env : $("#environment").val() 
       }, 
       dataType : "json", 
       success : function(data) { 
        response(data); // list of strings.. 
       }, 
       error : function(x, t, m) { 
        console.trace(); 
        if (!(console == 'undefined')) { 
         console.log("ERROR: " + x + t + m); 
        } 
        console.log(" At the end"); 
       } 
      }); 

     }, 
    }); 

successコールバックでは、あなたはフィルタリングする必要があるでしょう。..

答えて

2

バックエンドは常にデータ全体を返し、フィルタリングはしていないようです(サービス名自体はgetAllDomainsです)。その場合、ajax呼び出しを行うためにsourceオプションの関数形式を使う必要はありません。

あなたがやっていることは、ユーザーが入力するときに複数のAJAX要求をサーバーに送信することです。バックエンドが常に同じデータを返す場合は、複数の要求を送信する必要はありません。データを一旦取得して、レスポンスをソースとしてオートコンプリートを初期化すれば、ウィジェットはユーザタイプとしてフィルタリングを行います。

ドキュメントは言う:

単一の引数を期待応答コールバック、:データは、ユーザーに提案するが。このデータは、指定された用語に基づいてフィルタリングする必要があります。

サーバがフィルタリングを行っていない場合、機能フォームを使用してAJAXリクエストを作成しないでください。

ような何か:これは悪い考えです

$(function() { 
    // make a one-time request 
    $.ajax({ 
    url: "getAllDomains", 
    type: "GET", 
    contentType: "application/json", 
    dataType: "json", 
    success: function(data) { 
     // init the widget with response data and let it do the filtering 
     $("#domainNameId").autocomplete({ 
     source: data 
     }); 
    }, 
    error: function(x, t, m) { 
     console.trace(); 
     if (!(console == 'undefined')) { 
     console.log("ERROR: " + x + t + m); 
     } 
     console.log(" At the end"); 
    } 
    }); 

}); 
+0

yea ...私はサーバーからすべてのドメインを返しています。あなたが言ったように変更を加えました。ありがとうT J .. –

0

を助けに感謝しますsource関数に渡されたrequest.termを使用して自分自身data

jQueryオートコンプリートsourceに関する詳細は、https://api.jqueryui.com/autocomplete/#option-sourceです。

+0

を...フィルタリングは、ウィジェット自体に組み込まれた機能です。サーバーがフィルタリングを行わない場合は、複数のajax呼び出しを作成する必要はありません。 –

関連する問題