我的pdo ajax搜索代码不起作用

时间:2014-07-16 11:03:06

标签: javascript jquery html ajax pdo

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

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

我认为问题出现在我的search.php中,因为当我在索引中输入一封电子邮件后我去search.php时,search.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);

}

?>

1 个答案:

答案 0 :(得分:0)

我注意到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));   
}

<强> SCRIPT

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);
    }
}