php - 使 php 输入搜索但 jquery $.ajax 和 $.post 不起作用
问题描述
我正在尝试使用以下代码使用 ajax 制作一个实时搜索框,但它不起作用。当我echo "hello";
从 php 文件中删除其他所有内容时,它只会在屏幕上回显它并且不起作用,没有错误或返回值,这让我相信它与我的 jquery 代码有关,但我不确定。
jQuery:
$("#search").keyup(function(){
var value = $("#search").val();
$.post(walldb.php, {value: value}, function(data){
console.log(data);
})
});
继承人的PHP:
<?php
$arr = [];
$searchq = "%{$_POST['value']}%";
$stmt = $pdo->prepare("SELECT * FROM walldb WHERE wallname LIKE :s");
$stmt->bindParam(':s',$searchq);
$result=$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mlink = $row['mainlink'];
$tlink = $row['thumbnail'];
$dlink = $row['download'];
$info = $row['info'];
$val = $row['wallname'];
$arr[] = '<li>' . "<a href=" . "$mlink" . " data-lightbox='searchwall'> <img class='searchicon' src=" . "$tlink" . "></a>" . "<span>" . "$val" . "</span><img class='searchbutton1 s1' src='/images/info.png'>" . '<br>' . "<a id='wall1.download' href=" . "$dlink" . "><img class='searchbutton2' src='/images/download.png'></a>" . '<br>' . "<ul class='searchmenu menu1'><p>" . "$info" . "</p>
</ul>" . '</li>';
}
$final = '<ul>' . implode('', $arr) . '</ul>';
echo $final; //just echos everything on the screen :(
?>
html:
<form action= "" method= "post">
<a href="#"><img id="glass" src="/images/search.png" type= "submit" name="submit-search"></a><input id="search" name="search-input" type="search" placeholder="Search By Name" autocomplete="off"><a href="#"><img id="cancle" src="/images/cancle.png"></a>
</form>
我也很感激一些帮助,让整个事情工作使它搜索输入,因为我对 pdo/php 很陌生。
解决方案
我通过使用通用 javascript XMLHttpRequest 解决了这个问题,jquery 从来没有为我工作过,我不知道为什么。我很想了解为什么我的以下解决方案有效而 jquery 版本无效(我使用的是最新版本的 jquery)。
javascript:
$("#search").keyup(function () {
var http = new XMLHttpRequest();
var value = $("#search").val();
http.open("POST", 'walldb.php', true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onload = function () {
if (this.status == 200) {
$("#result").html(this.responseText);
}
}
http.send("value=" + value);
});
php:
<?php
$arr = [];
$searchq = "%{$_POST['value']}%";
$stmt = $pdo->prepare("SELECT * FROM walldb WHERE wallname LIKE :searchq");
$stmt->bindParam(':searchq',$searchq);
$result=$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$mlink = $row['mainlink'];
$tlink = $row['thumbnail'];
$dlink = $row['download'];
$info = $row['info'];
$val = $row['wallname'];
$arr[] = '<li>' . "<a href=" . "$mlink" . " data-lightbox='searchwall'> <img class='searchicon' src=" . "$tlink" . "></a>" . "<span>" . "$val" . "</span><img class='searchbutton1 s1' src='/images/info.png'>" . '<br>' . "<a id='wall1.download' href=" . "$dlink" . "><img class='searchbutton2' src='/images/download.png'></a>" . '<br>' . "<ul class='searchmenu menu1'><p>" . "$info" . "</p>
</ul>" . '</li>';
}
$final = '<ul>' . implode('', $arr) . '</ul>';
if (isset($_POST['value'])) { //added this
echo $final;
}
?>
推荐阅读
- hyperledger-fabric - 错误:在将新组织添加到网络时,没有找到能够执行此操作的 MSP
- plotly - Plotly.js 子图标题在跟踪顶部
- javascript - 重置缩放:仅更新平移?
- django - 使 usertype users 变得简单
- php - 使用 ssh2_connect 命令时的“localhost 当前无法处理此请求”
- clojure - Conditionally rename keys in a list and convert into a map?
- c++ - 为什么 time() 没有正确更新我的自定义时间?
- postgresql - Google Cloud SQL:如何使用 PostGIS 启用 GDAL 驱动程序?
- linux - 如何在shell脚本命令中动态传递参数?
- python - 如何打印 BeautifulSoup 收集的数据?