JQuery UI autocomplete: как отправить данные сообщения?

Из jQuery UI site (источник вэи):

$( "#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".

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

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

Спасибо!

Ответ 1

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

$("#birds").autocomplete({
  source: function (request, response) {
    $.post("search.php", request, response);
  },
  ...

Ответ 2

$( "#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);
?>

Ответ 3

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

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

  • Отправьте запрос POST.

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

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

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

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

        $( "#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
            });
        }});

Ответ 4

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

  jQuery('.some-autocomplete').autocomplete({
    source: function(request, response) {
      jQuery.post(ajaxurl, {action: 'some_content_search', type: type, term: request.term}, response, 'json');
    },
    minLength: 2,
    ...