Ajax请求正常,但没有输出结果。

3

你好,我是一个Ajax和PHP的初学者,如果我的问题无用或愚蠢,请见谅。但是我正在尝试使用Ajax进行实时搜索,我已经在互联网上找了很多,但没有什么能帮助我...所以我来这里了! :-) 我有4个文件,一个用于html,一个用于连接数据库,一个用于jQuery,最后一个用于php脚本。我已经在chrome控制台上查看了ajax的工作情况,但没有输出,我不知道为什么...我会在下面留下代码并提前感谢您!还有可能代码中会有一些法语,但那只是变量,我稍后会保护我的数据库连接。再次感谢。

Html:
<html>
<head>
    <meta charset="utf-8" />
    <title>live search test</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script type="text/javascript" src="search.js"></script>    
</head>
<body>


    <h1>LIVE SEARCH WITH AJAX TEST</h1>
    <div class="search">
    <input type="search" name="search" id="recherche">
    </div>
    <br>
    <div class="resultat" id="resultat">

    </div>
</body>
</html>

PHP连接数据库的代码:

<?php
$host="localhost";
$user="root";
$password="";
$db="smartphone";

$conn=mysqli_connect($host,$user,$password,$db);
?> 

jQuery:

$(document).ready(function(){
    $("#recherche").keyup(function(){
        var recherche = $(this).val();
        var data = 'motclef = ' + recherche;
        if (recherche.length > 1) {

          $.ajax({
          type : "GET",
          url : "fetch.php",
          data : data, 
          success : function(server_response){
             $("#resultat").html(server_response).show();
          }
          });

        } 

    });
  });

以下是 PHP 脚本:

include'connect.php';

if (isset($_GET['motclef'])) {
    $motclef = $_GET['motclef'];
    $q = array('motclef' => $motclef. '%');
    $sql = "SELECT name FROM smartphone WHERE name LIKE :motclef";
    $req = $conn ->prepare($sql);
    $req -> execute($q);
    $count = $req->rowCount($sql);

    if ($count == 1) {
        while ($result = $req -> fetch(PDO::FETCH_OBJ)) {
            echo 'Smartphone :'.$result ->title.' ';
        }
    }else {
    echo "Aucun resultat trouvé pour:". $motclef;
    }
}
?>
1个回答

1

'motclef = '中删除空格
var data = 'motclef= ' + recherche;

否则在您的PHP代码中加入下划线$_GET['motclef_'](如果不删除空格)

if (isset($_GET['motclef_'])) {
    $motclef = $_GET['motclef_'];
    $q = array('motclef' => $motclef. '%');
    $sql = "SELECT name FROM smartphone WHERE name LIKE :motclef";
    $req = $conn->prepare($sql);
    $req->execute($q);
    $count = $req->rowCount($sql);

    if ($count == 1) {
        while ($result = $req->fetch(PDO::FETCH_OBJ)) {
            echo 'Smartphone :'.$result->title.' ';
        }
    }else {
    echo "Aucun resultat trouvé pour:". $motclef;
    }
}

你好,感谢你的回答。我输入后似乎有输出,但现在出现了一个错误信息:“在非对象上调用成员函数prepare()”。这是什么意思? - keyup38
这是关于准备语句的内容。 - milan kyada
抱歉,我的声望还不够高,但是当我有足够的积分时,我会立即完成它。 - keyup38

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接