JavaScript - 变量不重置

时间:2014-02-21 12:41:09

标签: javascript php jquery

我的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";
    }
}

1 个答案:

答案 0 :(得分:1)

您已将参数定义为Global。您不需要将其作为参数传递。声明具有相同名称的参数时。它将隐藏全局参数。

因此,请勿使用count作为参数。即用getDetails(count)

替换getDetails()