首页 > 解决方案 > 使 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 很陌生。

标签: phpjqueryajax

解决方案


我通过使用通用 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;
}
?>

推荐阅读