如何在ajax中显示我的php的结果

时间:2014-07-17 05:14:29

标签: php jquery html ajax pdo

我想要的是在我的索引页面中显示我的count.php的结果。我的计划是自动计算user_code的行数,并在每次访问或查看页面时在索引页面中显示结果。

我的问题是ajax脚本没有收到count.php的结果,无法在索引页面的count输入框中显示它。

索引页:

<input type="text" value="1" name="countValue" id="countValue" style="width: 12px;" /><br />
Count: <input type="text" name="count" id="count" readonly="readonly" /><br /><br /><br />

<script>
$(document).ready(function(){
var countTimer = setInterval(
        function ()
        {
        codeValue();        
        }, 500);



var  $count = $('#count');

function codeValue(){
        $.ajax({
        url:"count.php",
        type:"GET",
        data: { term : $('#countValue').val() },
        dataType:"JSON",
        success: function(result) {

         $("#count").val(result.user_code);

        }

    });

};

});      
</script>

count.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);
echo $_GET['term'];

if (isset($_GET['term'])) {

$q = $_GET['term'];

$sql = "SELECT user_code FROM students";
$query = $dbc->prepare($sql);
$query->execute();
$num_rows = $query->rowCount(); 

echo json_encode(array('user_code'=>$num_rows)); 

}

?>

3 个答案:

答案 0 :(得分:0)

你的问题

echo $_GET['term'];

这会破坏脚本要生成的预期JSON格式。此外,你甚至没有使用任何请求参数,所以我不知道为什么你甚至打扰。

这是您的PHP,全部清理

<?php

try {
    $dbc = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '',
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

    $stmt = $dbc->query('SELECT COUNT(1) FROM students');

    header('Content-type: application/json');
    echo json_encode(['user_code' => $stmt->fetchColumn()];
} catch (Exception $e) {
    http_response_code(500);
    echo $e->getMessage();
}

我还建议在error选项中添加$.ajax回调来处理HTTP错误。

答案 1 :(得分:0)

我尝试你的代码,它适用于我的表我有(4)记录!检查您的查询是否有数据

确保标题中包含jquery文件。我没有改变你的html文件。我只是在我的桌子上创建自己的查询。那好吧。

答案 2 :(得分:-1)

你需要在indexfile中创建一个div,并在ajax文件中提供该div的id,以便在该div中填充count.php数据。

在这里,我将为您提供类似的示例,通过进行相关更改来尝试

的index.php

<div id="content">                        
</div>                        
    <script type="text/javascript">
        $(document).ready(function(){ 
    $.ajax({
      url: 'count.php',
      success: function(data) {
        $('#content').html(data);
      }
    });
<script>

count.php

<?php
error_reporting(-1);
ini_set('display_errors', 'On');

$host = "localhost";
$user = "root";
$pass = "";
$db = "test";
$con=mysqli_connect($host,$user,$pass,$db);
$result = mysqli_query($con,"SELECT user_code FROM students");
?>
<table>//this table will be loaded in div
    <?php
    while($row = mysqli_fetch_array($result))
    {
    ?>
        <tr>
            <td><?php echo $row['user_code']; ?></td>
        </tr>
    <?php
    }
    ?>
</table>

您还可以添加autorefresh ajax脚本,该脚本仅在特定时间间隔(下面代码中为1秒)后仅重新加载特定div而不重新加载整页

<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#content').load('count.php').fadeIn("slow");
}, 1000); // refresh every 10000 milliseconds

</script>