我的JavaScript遇到了一些问题。此脚本使用Ajax GET从PHP页面检索内容。它根据名为count
的变量获取内容。
此代码一直有效,直到到达我数据库中的最后一项。当它从PHP页面获得no_data
时:它应该重置counter
变量并从顶部重新开始,并继续无限循环。但是当我尝试用count = 0;
重置变量时:没有任何反应。那是为什么?
这是我的JS代码:
var count = 0;
var timer;
$(window).load(function() {
load_new_entry();
// timer = window.setInterval(load_new_entry, 7500);
// window.clearTimeout(timer);
});
function load_new_entry() {
fade_out();
}
function fade_out() {
$(".container").fadeOut(1500, load_data);
window.clearTimeout(timer);
}
function fade_in() {
$(".container").fadeIn(1500);
timer = window.setInterval(load_new_entry, 7500);
}
function load_data() {
getDetails(count);
count++;
}
function getDetails(count) {
$.get("data.php?count="+count,function(data,status){
if (data != 'no_data') {
var jsonReturnData = $.parseJSON(data);
$(".container").html(jsonReturnData.content);
fade_in();
//console.log("Load details: " + count);
} else {
count = 1;
fade_in();
//console.log("Counter Reset: " + count);
}
});
}
这是我的PHP:
<?php
mysql_connect("127.0.0.1", "root", "");
mysql_select_db("infoscreen");
function grab_data($count) {
$get_data = mysql_query("SELECT * FROM display ORDER BY `id` ASC LIMIT ".$count.",1");
while ($data = mysql_fetch_assoc($get_data)) {
$id = $data['id'];
$content = $data['content'];
$return_data = array('id' => $id, 'content' => $content);
//echo $return_data['content'];
echo json_encode($return_data);
}
}
if (isset($_GET['count'])) {
$count = $_GET['count'];
$utf_8 = mysql_query("SET CHARACTER SET utf8");
$data_exists = mysql_query("SELECT * FROM display ORDER BY id ASC");
if (mysql_num_rows($data_exists) > $count) {
// Next record is available
grab_data($count);
} else {
// Next record is not available
echo "no_data";
}
}
答案 0 :(得分:1)
您已将参数定义为Global
。您不需要将其作为参数传递。声明具有相同名称的参数时。它将隐藏全局参数。
因此,请勿使用count
作为参数。即用getDetails(count)
getDetails()