2014-02-21 3 views
0

У меня есть некоторые проблемы с моим JavaScript. Этот скрипт использует Ajax GET для извлечения содержимого с PHP-страницы. И он получает контент в зависимости от переменной, называемой count.JavaScript - переменная не сбрасывается

Этот код работает, пока не дойдет до последнего элемента в моей базе данных. Когда он получает no_data со страницы PHP: он должен сбросить переменную 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

Не используйте параметр 'count' в качестве параметра. Замените 'getDetails (count)' на 'getDetails()' – Satpal

+0

@Satpal О, глупо меня! Починил это! Опубликуйте его как ответ и плохо его принимайте. Итак, вы получаете свои очки –

+0

О, я только что видел это, отметьте, что он отвечает, когда он публикует его ... – reyaner

ответ

1

Как вы определили параметр как Global. Вам не нужно передавать его в качестве параметра. Когда вы объявляете параметр с тем же именем. Он скроет глобальный параметр.

Таким образом, не используйте count в качестве параметра. замените getDetails(count) на getDetails()

Смежные вопросы