Я пытаюсь использовать автозаполнение с использованием класса PHP. Ниже приведен JQuery.Ответ PHP с помощью JQuery
$(document).ready(function() {
$(".autocomplete").each(function() {
$(this).autocomplete({
source: 'php/LiveSearch.php?name='+ $(this).attr('name') + '&',
minLength: 1,
appendTo: "#container"
});
});
});
Я создал ниже LiveSearch.php, чтобы получить данные из базы данных
<?php
interface IConnectInfo {
const HOST = 'XXX.0.0.1:XXXX';
const UNAME = 'root';
const PW = 'xxx';
const DBNAME = 'test';
public static function doConnect();
}
class UniversalConnect implements IConnectInfo{
private static $server=IConnectInfo::HOST;
private static $currentDB=IConnectInfo::DBNAME;
private static $user=IConnectInfo::UNAME;
private static $pass=IConnectInfo::PW;
private static $hookup;
public static function doConnect() {
self::$hookup = mysqli_connect(self::$server, self::$user, self::$pass, self::$currentDB);
if(self::$hookup) {
echo ("Successful connection to MySQL:<br/>");
}
elseif (mysqli_connect_error(self::$hookup)) {
echo ('Here is what is failed: ' .mysqli_connect_error());
}
return self::$hookup;
}
}
class LiveSearch {
private $table;
private $hookup;
private $sql;
private $name = array();
private $res;
private $json;
private $term;
public function __construct() {
$this->table = "master";
//create mysqli object
$this->hookup = UniversalConnect::doConnect();
$this->doDisplay();
$this->hookup->close();
}
public function doDisplay() {
$this->term = 'g';
//$this->term = $_GET['term'];
$this->sql = "SELECT DISTINCT(Asset) FROM $this->table where Business LIKE '%$this->term%'";
try {
$result = $this->hookup->query($this->sql);
while ($row = $result->fetch_assoc()) {
$this->res = $row['Asset'];
array_push($this->name, $this->res);
}
$this->json = json_encode($this->name);
echo $this->json;
$result->close();
}
catch(Exception $e) {
echo "Here's what went wrong: " .$e->getMessage();
}
}
}
$Business1 = new LiveSearch();
?>
когда я открываю LiveSearch.php в веб-браузере, это дает мне правильный results..giving надлежащий выход JSon, запрашивая данные из базы данных. Но когда я пытаюсь использовать автозаполнение поиска, он не дает никакого результата. Я думал, что результат не будет в JQuery, но когда я написал другой простой класс (данный ниже) и создал экземпляр этого класса, результат появляется в автозаполнении. Не уверен, что в классе LiveSearch ничего не хватает, но я получаю результат для LiveSearch.php непосредственно в браузере. ниже другой простой класс, который работает
class swapnil {
public function __construct() {
$this->display();
}
public function display() {
$this->name = array("Swapnil");
$this->json = json_encode($this->name);
echo $this->json;
}
}
$Business = new swapnil();
спасибо заранее.
Вы пытались использовать инструмент разработчика из своего браузера, чтобы узнать, какие данные плагин jquery действительно получает с вашего сервера? – Scalpweb
Во-первых, можете ли вы указать, какие библиотеки/фреймворки вы используете? Во-вторых, вы должны знать, что в ваш ответ входит «echo» в PHP. Поэтому, даже если вы успешно подключитесь к БД, у вас будет «Успешное подключение к MySQL:
» в вашем результате, испортив синтаксический анализ данных JSON. Пожалуйста, рассмотрите возможность проверки ваших запросов XHR в режиме проверки Chrome, FF или даже IE и отправьте соответствующие откровения. – Cunning
Вы также должны удалить закрывающий тег php (?>) В конце вашего скрипта. Это не обязательно, и на самом деле это может привести к ошибкам (например, после этого у вас есть пространство для трения, и это беспорядок с вашим json). – Scalpweb