Intereting Posts

Автозаполнение JQuery, заполняется данными из pHp json

Я возвращаю JSON-кодированный массив: echo(json_encode($data)); от php, и я бы хотел, чтобы он заполнил поле подсказки из автозаполнения JQuery. Я использую это:

 $("#field").autocomplete({ source : "SearchTest.php", maxLength: 5 }); 

Не знаю, почему это не работает. После каждого нажатия клавиши я получаю данные и заполняю поле предложения этими данными, я не хочу, чтобы автозаполнение сортировалось и выбиралось для меня, я делаю эту сторону сервера. Пока это список строк. Быть способным настроить, как данные будут представлены, было бы неплохо.

Изменить: Изменен источник для публикации:

 $("#field").autocomplete({ source : function(request, response) { $.post("SearchTest.php", request, response); }, maxLength : 5 }); 

Получение этой ошибки сейчас:

 Uncaught TypeError: Cannot use 'in' operator to search for '1240' in Notice: Undefined index: field in /.../SearchTest.php on line 25 

Строка 25: $whatTheyWantToSearch = $_POST['field'];

Related of "Автозаполнение JQuery, заполняется данными из pHp json"

Попробуйте использовать ajax

 var searchRequest = null; $("#field").autocomplete({ maxLength: 5, source: function(request, response) { if (searchRequest !== null) { searchRequest.abort(); } searchRequest = $.ajax({ url: 'SearchTest.php', method: 'post', dataType: "json", data: {term: request.term}, success: function(data) { searchRequest = null; response($.map(data.items, function(item) { return { value: item.name, label: item.name }; })); } }).fail(function() { searchRequest = null; }); } }); 

Пример ответа JSON в SearchTest.php

 <?php header('Content-type: application/json'); echo '{"items":[{"name":"Ashok"},{"name":"Rai"},{"name":"Vinod"}]}'; ?> 

Демо-скрипт

Удаленная демонстрация JSONP

правильный формат json для этого из php:

 <?php echo '[ {"name1":"val1"},{"name2":"val2"} ]'; ?> 

Из js, означающего [] -файл объектов {}.

В моем случае для автосъемщика widjet это прекрасно работает:

  $response="["; while($row = $res->fetch_assoc()){ if($response !="[")$response.=","; $response.='{"label":"'.$row["fio"].'","value":"'.$row["id"].'"}'; } $response.="]"; echo $response; 

Возможно, что-то не так с параметром источника. Должно ли это быть «/Searchtest.php»?

http://api.jqueryui.com/autocomplete/#option-source

Что-то вроде этого – лучший способ. json_encode все работает для вас.

  $result = $_mysqli->query(...); $rs = array(); $pos = 0; while($row = $result->fetch_assoc()){ $rs[$pos]["n1"] = $row["n1"]; $rs[$pos]["n2"] = $row["n2"]; ... $rs[$pos++]["nn"] = $row["nn"]; } header('Content-type: application/json'); echo json_encode($rs);