我想要的是在我的索引页面中显示我的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));
}
?>
答案 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>