2014-02-13 4 views
0

Я пытаюсь использовать jQuery autocomplete plugin with remote data source, я думаю, что получаю результаты, которые хочу, но я не могу получить к ним доступ в JavaScript-коде.Как получить все результаты от автозаполнения jQuery?

<div class="ui-widget"> 
    <label for="search_courses">Search:</label> 
    <input id="search_courses" /> 
</div> 
<div class="ui-widget" style="margin-top:2em; font-family:Arial">Result: 
    <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div> 
</div> 


<script type="text/javascript" id="autoCompleteScript"> 
    $(function() { 
     function log(message) { 
      $("<div>").text(message).prependTo("#log"); 
      $("#log").scrollTop(0); 
     } 
     $("#search_courses").autocomplete({ 
      source: "search_datasource", 
      minLength: 2, //search after two characters 
      select: function(event, ui) { 
       // This is never called, because there is nothing to select.      
       alert("test. code does not come here."); 
       log(ui.item ? 
        "Selected: " + ui.item.value + " aka " + ui.item.id : 
        "Nothing selected, input was " + this.value); 
      } 
     }); 

     $("#search_courses").on("autocompletesearch", function(event, ui) { 
      console.log(ui); // see the picture for this output 
     }); 
    }); 
</script> 

Для целей тестирования, мой search.php (CodeIgniter) заключается в следующем:

$this->load->database();  
    $this->load->database();   
    $result = $this->db->query("SELECT id as label, title as value FROM mytable")->result_array();  
    $response = ""; 
    $response_array=array(); 
    foreach($result as $row) 
    { 
     $response_array[] = json_encode($row); 
    } 
    $response = implode("," , $response_array); 
    $response = "[". $response ."]"; 

    echo $response; // it echoes something in this form : 
    //[{"id":"Phoenicopterus roseus","label":"Greater Flamingo","value":"Greater Flamingo"},{"id":"Tarsiger cyanurus","label":"Red-flanked Bluetail","value":"Red-flanked Bluetail"}] 
      // but it contains 60 mysql rows. 

Теперь смотрите, что происходит, когда я делаю поиск:

autocomplete result

(full size image here)

Так как я могу получить массив всех j сырые объекты, которые печатаются PHP?

Я имею в виду, как я могу получить доступ к массиву в JS?

Спасибо за помощь!

ответ

0

С функцией jQuery.parseJSON().

https://api.jquery.com/jQuery.parseJSON/

С вашим DATAS это будет что-то вроде этого:

var obj = jQuery.parseJSON(ui); 
console.log(obj[0].label) //shows "Greater Flamingo"; 
console.log(obj[1].label) //shows "Red-flanked Bluetail" 
+0

Спасибо, но это дает ошибку: 'SyntaxError: JSON.parse: неожиданный character' Я думаю, что пользовательский интерфейс уже есть объект. Это не ответ search.php. – jeff

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