使用输入字段搜索ajax

时间:2016-04-20 19:58:15

标签: php pdo

我正在尝试创建一个ajax函数来重新加载<div>而不是整个页面。

工作原理: - 在输入字段中写入时,div会在每个字符正确后重新加载。

什么不起作用: - 当输入字段再次为空时,它不会显示我在数据库中的所有条目。

这就是我在php文件中所拥有的div:

function showGames(str) {
if (str == "") {
    document.getElementById("searchgame").innerHTML = "";
    return;
} else { 
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("show").innerHTML = xmlhttp.responseText;

        }
    };

    xmlhttp.open("GET","searchgame.php?game="+str,true);
    xmlhttp.send();
} }

这就是我在search.php

中的内容
<?php

include 'test/database.php';

$pdo = Database::connect();

if($_GET['game'] == "") {
    $sql="SELECT * FROM games WHERE active=1";
    echo "<script type='text/javascript'>alert('Should be empty')</script>";

} else {
    $q = $_GET['game'];
    $sql="SELECT * FROM games WHERE gamenamelong LIKE '%".$q."%'";
}

$stmt = $pdo->prepare($sql);

$stmt->execute();
$gameResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
$rowCount1 = count($gameResults);

有人能帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

因为我们不知道你的表单是什么样的,以及函数showGames如何调用,我只能给出一个模糊的答案。但是你应该解决你的主要问题/错误:

在您的函数showGames中,如果搜索字符串为空,则您从未点击过ajax,因此您无法返回所有结果。

所以我建议改变这个功能:

function showGames(str) {
   if (str == "") {
      document.getElementById("searchgame").innerHTML = "";
      //remove that: return;
   } 
   // remove the 'else { '

   // now you allways hit the ajax
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("show").innerHTML = xmlhttp.responseText;

    }
  };

  xmlhttp.open("GET","searchgame.php?game="+str,true);
  xmlhttp.send();
// remove closing bracket of if-else: '}'
}