У меня есть поле автозаполнения 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 });
Он корректно работал с использованием массива 'tags' в качестве входных данных образца.
Теперь мне нужно иметь набор результатов запросов MySQL вместо этого массива выборок. То, что я сделал, это изменить вызов функции:
$("input#name").autocomplete({ position: { offset: "0 -10px", }, source: "http://absolutepathtofile/autosuggest.php" });
Я использовал абсолютный путь, чтобы быть уверенным, что я не совершал какую-то глупую ошибку, потому что я не могу вернуть файл в автозаполнение. Я был в документации jQuery и нашел несколько примеров использования PHP / MySQL для возврата результатов автозаполнения, но я не могу заставить его работать.
Это то, что я пробовал в autosuggest.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);
в$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 (используется раньше).
$.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 – термин – это текст в текстовом поле автозаполнения, он автоматически добавляется элементом управления.
Код «щелчок» просто автоматически выпадает из автозаполнения, когда пользователь нажимает на него, а также при их вводе.
Вот 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;