JQuery UI автозаполнение: как отправить данные сообщения? - PullRequest
10 голосов
/ 28 ноября 2011

С сайта jQuery UI (источник):

$( "#birds" ).autocomplete({
    source: "search.php",
    minLength: 2,
    select: function( event, ui ) {
        log( ui.item ?
            "Selected: " + ui.item.value + " aka " + ui.item.id :
            "Nothing selected, input was " + this.value );
    }
});

Итак, как я вижу, нет вариантов, как сделать ajax-запрос с отправкой данных на "search.php".

Но мне нужно сделать это, чтобы отправить фильтр из предыдущего поля ввода (текущее поле: город , предыдущее поле: страна ).

Как это сделать?

Спасибо!

Ответы [ 4 ]

18 голосов
/ 28 ноября 2011

Попробуйте изменить источник на метод, который использует $ .post:

$("#birds").autocomplete({
  source: function (request, response) {
    $.post("search.php", request, response);
  },
  ...
5 голосов
/ 18 апреля 2014
$( "#birds" ).autocomplete({ 
source: function (request, response) {
    $.ajax({
  type: "POST",
  url:"search.php",
  data: request,
  success: response,
  dataType: 'json'
});
  }
}, {minLength: 3 });

//-------------------------
//search.php - example with request from DB

//


 $link = mysql_connect($mysql_server, $mysql_login, $mysql_password)
        or die("Could not connect: " . mysql_error());
     mysql_select_db($mysql_database) or die("Could not select database");
     mysql_set_charset('utf8'); 

$req = "SELECT mydata FROM $mysql_table WHERE mydata LIKE '".$_REQUEST['term']."%' ORDER BY mydata ASC";
$query = mysql_query($req);

while($row = mysql_fetch_array($query))
{
    $results[] = array('label' => $row['mydata']);
}


echo json_encode($results);
?>
2 голосов
/ 26 мая 2015

У меня была такая же потребность, и ни один пример из stackoverflow не работал должным образом.

Тестируя вклады разных авторов и настраивая их здесь и там, приведенный ниже пример является наиболее вероятным, что кто-то будет искать в автозаполнении, которое

  1. Отправить запрос POST.

  2. Не требует настройки основного интерфейса автозаполнения.

  3. Отправляет несколько параметров для оценки.

  4. Извлекает данные из файла PHP базы данных.

Вся заслуга многих людей, которым я использовал их типовые ответы. сделать этот рабочий образец.

        $( "#employee_name" ).autocomplete({
        source: function (request, response) {
        $.ajax({
        type: "POST",
        url:"employees.php",
        data: {term:request.term,my_variable2:"variable2_data"},
        success: response,
        dataType: 'json',
        minLength: 2,
        delay: 100
            });
        }});
0 голосов
/ 07 мая 2016

Следующее сработало хорошо для меня.Мне потребовались некоторые пользовательские данные, поэтому я вытащил поисковый термин "1001" из запроса следующим образом:

...