我的pdo ajax代码搜索不工作

My pdo ajax code for search is not working

本文关键字:工作 搜索 代码 pdo ajax 我的      更新时间:2023-09-26

我想做的是:当用户输入他们的电子邮件时,我的ajax代码将运行并在密码输入框中显示用户的密码。

问题是,当我的ajax代码发送电子邮件到search.php,我的search.php没有给我的ajax数据显示。

我认为问题是在我的搜索。php,因为当我去搜索。php后,我键入电子邮件在我的索引搜索。php只是空白,没有数据显示。

指数(形式):

email <input type="text" id="query" name="myemail" class="search_textbox" /><br />
Your Password <input type="text" id="mypass" name="mypass" readonly="readonly" /><br />
<script>
$(document).ready(function(){
    $('.search_textbox').on('blur', function(){
                $('#query').change(updateTextboxes);
                updateTextboxes()  
            })
    $('.search_textbox').on('keydown', function(){
                $('#query').change(updateTextboxes); 
                updateTextboxes() 
            })
    $('#query').change(updateTextboxes);
    var  $mypass = $('#mypass');
    function updateTextboxes(){
        $.ajax({
        url:"search.php",
        type:"GET",
        data: { term : $('#query').val() },
        dataType:"JSON",
        success: function(result) {
        var ii = 1;
        for (var i = 0; i < result.length; i++) { 
                    $mypass.val(result[i].value).show().trigger('input');                           
            ii++;
            }
        }

    });

};

});      
</script>

search.php

<?php
error_reporting(-1);
ini_set('display_errors', 'On');
$host = "localhost";
$user = "root";
$pass = "";
$db = "test";
$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (isset($_GET['term'])) {
    $q = $_GET['term'];
    $sql = "SELECT password FROM students WHERE email = :term";
    $query = $dbc->prepare($sql);
    $query->bindParam(':term', $q);
    $results = $query->execute();
    $data = array();
    while ($row = $results->fetch()) {
        $data[] = array(
            'value' => $row['password'] 
        );
    }
    header('Content-type: application/json');
    echo json_encode($data);
}
?>

我注意到了header('Content-type: application/json');。我认为没有必要。拔掉电话线,再试一次。我不确定,但我认为php header需要一个新的页面。由于您有echo json_encode($data);并且在AJAX调用中,您已经将返回数据处理为json,因此不需要header(...)

编辑

$q = $_GET['term'];
$sql = "SELECT password FROM students WHERE email = :term";
$query = $dbc->prepare($sql);
$query->bindParam(':term', $q);
if($query->execute() && $query->rowCount()){
    echo json_encode($query->fetch(PDO::FETCH_ASSOC));   
}
脚本

function updateTextboxes(){
    $.ajax({
    url:"search.php",
    type:"GET",
    data: { term : $('#query').val() },
    dataType:"JSON",
    success: function(result) {
        //check here if you have a result, if yes than...
        $("#mypass").val(result.password);
    }
}