2016-01-06 7 views
4

Я использую select2 и ajax для запроса моей базы данных для терминов под определенной таксономией, но когда я ищу окна поиска, просто зависает на «поиске», не получая никаких результатов.Select2 ajax не показывает результаты

Это мой HTML

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

Мой 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> 

и мой PHP код запроса к базе данных, Я ищу, чтобы получить все срочные имена в соответствии с лицензией таксономия "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); 

И как вы можете видеть, я извлекаю свои данные, но поиск просто зависает.

enter image description here

Спасибо заранее.

+0

попробуйте изменить это: 'processResults' to:' success' – Derek

+0

Используете ли вы индексы? – devpro

+0

Запустить запрос yur вручную на phpmyadmin, он работает быстро или nt – devpro

ответ

0

Так что вам нужно изменить processResults к success и поместить следующее в этой функции:

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) 
} 

И оттуда, вы можете сделать что-то вроде этого:

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

Спасибо! Чтобы уточнить, «поиск» следует заменить идентификатором «select correct»? – Itamar

+0

Да, я бы так сказал. Или вы можете добавить div внутри выбора и разместить там содержимое. – Derek

+0

Когда я делаю это, я получаю «TypeError: document.getElementById (...) null», это мой измененный скрипт jquery с вашими предложениями http://codepaste.net/j5xjck. Еще раз спасибо за вашу помощь! – Itamar

Смежные вопросы