2017-05-02 74 views
0

我正在爲我正在創建的一些系統創建一個接口,並且我需要圍繞在系統中其他位置使用的預先存在的PHP AJAX函數編寫Javascript(純粹因爲做我們數據庫工作的人太忙了,不能根據我的需要調整代碼)。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 
    }); 

這應該打開一個返回的字符串中的name1,name2,name3,name...的格式轉換成需要的格式進行選擇二顯示,但是,它目前沒有工作。下拉菜單顯示爲空白。

我見過一些提及text和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的map函數來創建對象,如下所示:'processResults:function(data){return {results:$ .map(data.split(「,」),function(item){return { text:item,id:item}})}; }' –