2017-05-02 1 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 
    }); 

이것은 그러나, 현재 작동하지 않습니다, 표시 선택 2에 필요한 형식으로 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 함수를 조정할 수는 없습니다. 현재 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 { 텍스트 : item, id : item}})}; }' –

관련 문제