2017-05-02 13 views
0

私が取り組んでいるシステム用のインターフェースを作成しています。システム内の別の場所で使用されていた既存のPHP AJAX関数の周りにJavascriptを書く必要があります私たちのDBを使っている人は、自分のニーズに合わせてコードを修正するのが忙しいので)。Select2がAJAXのドロップダウンメニューに結果を表示しない

Select2を使用すると、ユーザーがデータベース内で名前を検索し、それに一致するフィールドを選択して後で別のAJAX関数にポストすることができる選択フィールドを作成する必要があります。私は、次のコードでこれを行っている:

//<select id="sltMyName" style="width: 100%;"></select> 

    $("#sltMyName").select2({ 
     ajax: { 
      type: "POST", 
      url: "includes/php/report_searchPlayers.php", 
      delay: 250, 
      data: function (params) { 
       return { 
        q: params.term // search term 
       }; 
      }, 
      processResults: function (data) { 
       console.log({ results: data.split(",") }); 
       return { results: data.split(",") }; 
      } 
     }, 
     minimumInputLength: 1 
    }); 

Selectセレクトしかし、それは現時点では動作しません、表示するためにこれは必要な形式にname1,name2,name3,name...の形式で返された文字列を有効にしてください。ドロップダウンは空白になります。

テキストとID属性を参照するといくつかの質問がありましたが、それらはすべて返されるJSON文字列のコンテキスト内にあるため、ここで必要とされているかどうか、コンテキスト。さらに、私はドキュメントでこれを見つけることができません。

提案がありますか?前もって感謝します。

データが返さ: Tommy,Jak_Tommy_Lee_Jones,Tommy_Shelby,Tommy_Balboner,TommyCZ,GA_Tommy,VA_Tommy,Tommy_Skrattar,Tommy_Knocker,Tommy_of_Elektro,Tommy_the_Destroyer,Old_Tommy,tommy_of_house_shelby,TommyDermo,TommyC,TommyCash_CZ,Tommyb69k,SA_Tommy,tommyfaster,Tommy_See,Tommy_de_Destroyer,Tommy_of_Whiteroses,TommyShelby,Templar_Intiate_Tommy,Templar_Initiate_Tommy,tommysuckspp,Tommy_the_Overweight

+0

PHPのサンプルデータを提供できますか? – MaxZoom

+0

質問にPHP関数から返されたデータを追加しました。 PHP関数を調整することはできません。なぜなら、私が現在そのアクセス権を持っておらず、他の誰かがそれをやる必要があるからです。 –

+0

ご使用のSelect2のバージョンは?私はこれを手助けしようとします。 – james

答えて

2

私はそれを考え出したと思います。主な問題は、Select2が使用したいデータは、少なくともidという名前のプロパティとtextという名前のプロパティを持つオブジェクトの配列である必要があることです。 processResults機能では、これらのオブジェクトを作成するだけです&次に、ドロップダウンにURLのデータが入力されます。

私は入力したデータをフィルタリングしようとしていますが、渡されたURLはパラメータを受け入れないため、毎回同じデータが返されます。より堅牢な例が必要な場合はお知らせください。

実用的なソリューションについては、https://jsfiddle.net/yp0rp2kw/3/を参照してください。

+1

ええ、働いているようです、ありがとう。私はあなたのソリューションを使用しましたが、次のようにオブジェクトを作成するためにJqueryのマップ関数を使用しました: 'processResults:function(data){return {results:$ .map(data.split("、 ")、function(item){return {テキスト:item、id:item}})}; } ' –

関連する問題