Получение автозаполнения jQuery для работы с исходным кодом PHP


У меня есть поле автозаполнения jQuery с этим кодом:

 var tags = ["a", "ab", "abc", "abcd", "adbce", "abcdef", "abcdefg", "abcdefgh", "abcdefghi", "abcdefghij", "abcdefghijk", "abcdefghijkl", "abcdefghijklm", "abcdefghijklmn", "abcdefghijklmno", "abcdefghijklmnop", "abcdefghijklmnopq", "abcdefghijklmnopqr", "abcdefghijklmnopqrs", "abcdefghijklmnopqrst", ];
      $("input#name").autocomplete({
        position: {
          offset: "0 -10px",
        },
        source: tags
      });

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

Теперь мне нужно иметь набор результатов запроса MySQL вместо этого образца массива. Что я сделал, так это изменил вызов функции на следующий:

$("input#name").autocomplete({
        position: {
          offset: "0 -10px",
        },
        source: "http://absolutepathtofile/autosuggest.php"
      });

Я использовал абсолютный путь, чтобы быть уверенным, что я не сделал какую-то глупую ошибку там, потому что я не могу получить возврат файла в автозаполнение. Я был в документации jQuery и нашел несколько примеров использования PHP / MySQL для возврата результатов для автозаполнения, но я не могу заставить его работать.

Это то, что я попробовал в самовнушении.php:
$term = $_REQUEST['term'];
$query = "SELECT * FROM merchants WHERE business_name LIKE '%$term%'";
$result = mysql_query($query);

$k=0;
while($row=mysql_fetch_array($result)){

    $aUsers[$k]=$row['business_name'];
    $k++;

}

echo json_encode($aUsers);
Я постарался сделать это как можно проще, но ничего не вышло.

Затем я проверил, посылается ли JSON вообще, поэтому я сделал это:

$array[0]="test";
$array[1]="test1";

echo json_encode($array);

И это не работает. Я нигде не могу найти эту проблему, что я делаю не так? PHP версия 5.3.10 и имеет json_encode (использовался ранее).

2 2

2 ответа:

$.ajax({
     url:"http://absolutepathtofile/autosuggest.php",
     type:"post",
     success:function(html){
         $("#user_phone").autocomplete(
            {position: {offset: "0 -10px"},
            source: html
         });
     }   
});
  • Работа велика для меня и проверена

Я написал этот пользовательский скрипт, чтобы заставить выпадающие списки работать в нашем коде, когда у нас не было json_encode, надеюсь, это поможет вам что-то придумать.

Функция 'get_xref_values ()' просто строит массив из предоставленных параметров, а GET - 'term' - это текст в текстовом поле автозаполнения, он добавляется автоматически элементом управления.

Код "click" просто делает выпадающее меню автозаполнения автоматически, когда пользователь нажимает на него, а также когда они тип.

Вот jquery:

$("#libraryEventAspectRatio" ).autocomplete({
    source: "/dropDowns/autoXref.php?category=" + "aspectratio",
    matchContains: true,
    minLength: 0
}).click(function(){
    $("#libraryEventAspectRatio" ).autocomplete('search', $(this).val());
});

А вот и php:

//this page creates simple data for a drop down box to use (jquery's UI autocomplete)

$category       = get_input_get("category");
$description    = get_input_get("term");
$select_field   = get_input_get("selectField");
$select_value   = get_input_get("selectValue");

$order_by       = "description";

$xref_data      = get_xref_values($category, $order_by, $description, $select_field, $select_value);

$str = "[";

foreach ($xref_data as $row):
    $str .= '"' . $row['description'] . '",';
endforeach;

//chop off the last comma
if (count($xref_data)) {
    $str = substr($str,0,-1);
}

$str .= "]";

echo $str;