2015-04-27 7 views
2

Это используются сценарии, https://www.devbridge.com/sourcery/components/jquery-autocomplete/Uncaught TypeError: Не удается прочитать свойство «длина» неопределенной Jquery автозаполнения

Я использую JQuery автозаполнения для поиска пользователей из моей БД.

Ниже контроллер, который возвращает JSON:

public function searchusers1() { 
    if ($_GET) { 
     $query = $this -> input -> get('query'); 

     $searcharray = $this -> model_usermanage -> searchuser($query); 

     $a_json = array(); 
     $a_json_row = array(); 
     foreach($searcharray as $row) { 
      //$user_firstname = htmlentities(stripslashes($row['user_firstname'])); 
      //$user_lastname = htmlentities(stripslashes($row['user_lastname'])); 
      $user_email = htmlentities(stripslashes($row['user_email'])); 
      //$a_json_row["user_firstname"] = $user_firstname; 
      $a_json_row["user_email"] = $user_email; 

      array_push($a_json, $a_json_row); 
     } 
     echo json_encode($a_json); 
    } 
} 

Ниже мой JQuery:

$('#reply_bcc').autocomplete({ 
    serviceUrl: '<?php echo base_url(); ?>index.php/hi/test/searchusers1', 
    minChars: 3, 
    onSelect: function (suggestion) { 
     console.log('You selected: ' + suggestion.data + ', ' + suggestion.data); 
    } 
}); 

Вот мой JSON ответ:

[{"user_email":"[email protected]"},{"user_email":"[email protected]"},{"user_email":"[email protected]"},] 

Мой HTML:

<div class="col-md-10"> 
    <input type="text" name="reply_bcc" id="reply_bcc" autocomplete="off" class="form-control"> 
</div> 

Моя проблема заключается в:

Я получаю ниже ошибки в консоли, и я не могу видеть это поиск значения в качестве выпадающего списка в моем HTML ввода:

Uncaught TypeError: Cannot read property 'length' of undefined

Что происходит не так с этим?

Спасибо!

+0

Похоже, вы не следуя [руководящих принципов API для ответа] (https://www.devbridge.com/sourcery/components/jquery- автополный/# JQuery-автополный-ответ-формат). – epascarello

ответ

4

Документация объясняет «Ответ сервера должен быть отформатирован JSON следующий объект JavaScript:»

{ 
    // Query is not required as of version 1.2.5 
    "query": "Unit", 
    "suggestions": [ 
     { "value": "United Arab Emirates", "data": "AE" }, 
     { "value": "United Kingdom",  "data": "UK" }, 
     { "value": "United States",  "data": "US" } 
    ] 
} 

И вы просто возвращая массив без значений формата/данных. Вы можете изменить свой формат на PHP или использовать функцию transformResult, чтобы создать свойство предложений с вашим массивом.

Вы должны добавить объект в вашем PHP код:

$obj = new stdClass(); 
$obj->suggestions = $a_json; 
echo json_encode($obj); 
+0

Мне удалось получить его с помощью {«Значение»: «XX»}, но все еще имеет такую ​​же проблему. Как добавить {«Предложения»: [...]} в PHP? – rjcode

+0

Вам нужно создать объект. Позвольте мне уточнить ответ. –

+1

Вы супер, это сработало, но только исправление, stdObject() не работает, он должен быть $ obj = new stdClass(); спасибо – rjcode

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