поиск php на входе, но jquery $. ajax и $ .post не работают - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь создать окно поиска в реальном времени, используя 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.

Ответы [ 2 ]

0 голосов
/ 11 января 2020

Я исправил эту проблему с помощью generi c 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;
}
?>
0 голосов
/ 09 января 2020

Попробуйте исправить это:

$stmt = $pdo->prepare('SELECT * FROM walldb WHERE wallname LIKE ?');
$stmt->execute([$searchq]);

до

$searchq = '%' .$_POST['value']. '%'; //edited 
$stmt = $pdo->prepare('SELECT * FROM walldb WHERE wallname LIKE ?');
$stmt->bind_param('s', $searchq);
$stmt->execute();
while($row= $stmt->fetch_assoc()){ 

или PDO

$searchq = '%' .$_POST['value']. '%'; //edited 
$stmt= $pdo->prepare('SELECT * FROM walldb WHERE wallname LIKE :searchq');
$stmt->bindParam(':searchq', $searchq, PDO::PARAM_STR);
$stmt->execute();
while($row= $stmt->fetch_assoc()){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...