автозаполнение jQuery UI: как отправить данные post?

С jQuery UI site (источник veiw):

$( "#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 с POST-данные до "search.php".

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

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

спасибо!

4 ответов


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

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

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

У меня была такая же потребность, и ни один пример из 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
            });
        }});

следующее хорошо сработало для меня. Мне нужны были некоторые пользовательские данные, поэтому я вытащил поиск "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,
    ...