Select2 ajax not showing results

匿名 (未验证) 提交于 2019-12-03 00:55:01

问题:

I am using select2 and ajax to query my database for terms under a certain taxonomy, but when I search the search boxes just hangs on "searching" without retrieving any results.

This is my html

<select multiple="" name="regions1[]" id="regions1" class="job-manager-multiselect select2-hidden-accessible" required="" tabindex="-1" aria-hidden="true"></select> 

My jquery:

<script> jQuery(function($) { $(document).ready(function() { $( "#regions1" ).select2({         ajax: {     url: "/ajax/connect.php",     dataType: 'json',     delay: 250,     data: function (params) {         return {             q: params.term // search term         };     },     processResults: function (data) {         // parse the results into the format expected by Select2.         // since we are using custom formatting functions we do not need to         // alter the remote JSON data         return {             results: data         };     },     cache: true }, minimumInputLength: 2   });   });    });  </script> 

and my php code to query the database, I am looking to get all the term names under the taxonomy "job_listing_region"

<?php    $servername = "localhost";   $username = "myusername";   $password = "mypassword";     try { $conn = new PDO("mysql:host=$servername;dbname=mydatabase", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    }     catch(PDOException $e)    {    echo "Connection failed: " . $e->getMessage();    }      // strip tags may not be the best method for your project to apply extra     layer of security but fits needs for this tutorial     $search = strip_tags(trim($_GET['q']));    // Do Prepared Query    $query = $conn->prepare("    SELECT * FROM (     SELECT wp_terms.name    FROM wp_terms    JOIN wp_term_taxonomy     ON wp_term_taxonomy.term_id = wp_terms.term_id     WHERE taxonomy = 'job_listing_region'     AND count = 0     ) as T"      );      // Add a wildcard search to the search variable      $query->execute(array(':search'=>"%".$search."%"));      // Do a quick fetchall on the results     $list = $query->fetchall(PDO::FETCH_ASSOC);     // Make sure we have a result    if(count($list) > 0){     foreach ($list as $key => $value) {     $data[] = array('id' => $value['name'], 'text' => $value['name']);                  }      } else {    $data[] = array('id' => '0', 'text' => 'No Products Found');    }   // return the result in json echo json_encode($data); 

And as you can see, I am retrieving my data, but the search just hangs.

Thanks in advance.

回答1:

Found the solution here How to load JSON data to use it with select2 plugin

Needed to recreate my results like this

processResults: function (data) { return {     results: $.map(data, function(obj) {         return { id: obj.id, text: obj.text };     }) }; } 


回答2:

So you need to change processResults to success and put the following into that function:

for(i=0;1<data.length;++i){    var currentObject = data[i];    var id = currentObject.id;    var text = currentObject.text;    //do what you need to here (Put things in a div, etc) } 

And from there, you can do something like this:

document.getElementById("search").innerHTML = document.getElementById("search").innerHTML+"<br />"+id+text; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!