PHPクラスを使用してオートコンプリートを使用しようとしています。以下はJQueryです。JQueryを使用したPHPの応答
$(document).ready(function() {
$(".autocomplete").each(function() {
$(this).autocomplete({
source: 'php/LiveSearch.php?name='+ $(this).attr('name') + '&',
minLength: 1,
appendTo: "#container"
});
});
});
私は、データベース私は、Webブラウザ上で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
まず、使用しているライブラリ/フレームワークを教えてください。第二に、PHPの 'echo'があなたの応答に入っていることに気づくべきです。したがって、DBに正常に接続しても、成功したMySQLへの接続:
が結果として得られ、JSONデータの解析がうまくいかなくなります。 Chrome、FF、またはIEの検査モードでXHRリクエストを検査し、関連する啓示を投稿することを検討してください。 – Cunning
スクリプトの最後に閉じるphpタグ(?>)も削除する必要があります。それは必要ではなく、実際にはエラーが発生することがあります(たとえば、後にスペースがあり、jsonで混乱します)。 – Scalpweb