Javascript不会发布变量

时间:2013-03-12 07:12:48

标签: php javascript

为什么此代码在单元测试中工作正常,但在页面中却没有?我有Firebug和FirePHP,并且可以看到变量传递就好了如果我硬编码它,操作在单元测试中传递一个int就好了,但我尝试过parseInt,Math.floor和许多其他古怪的方法而且statementCount的值根本不会发布。 ajax:

            //polling code
        var statementCount = 0; 

        (function poll(){
        setTimeout(function(){

        $.ajax({ url: "RROO_update.php", 
                type: "POST", 
                data: {'meetID': 2176, 'statementCount': statementCount}, 
                    success: function(data){

                        if(data.length > 0){

                            var statements = JSON.parse(data);

                            //reset the statement count
                            statementCount = statementCount + statements.length;

                            $(this).actplug_RROO('formatReturns', statements, userID);
                            poll();
                        }                                   

                     },         
                    error: function(){
                        poll();
                    }, 
                });
        }, 5000);
        })();

和php:

<?php
 include("../inc/variables.php");
 error_reporting (E_ALL ^ E_NOTICE);

 require_once('../FirePHPCore/FirePHP.class.php');
 require_once('../FirePHPCore/fb.php');
 $firephp = FirePHP::getInstance(true);
 ob_start();



 $MeetingID         = $_POST['meetID'];
 $StatementCount    = (int)$_POST['statementCount'];


 $firephp-> log($StatementCount, 'Statement count passed in' );

 $Finished = FALSE;

 while($Finished == FALSE){

     $MeetingStats = mysql_query("SELECT RROO_UPDATE.*, MEMBER.UserName, MEMBER.UserImage FROM RROO_UPDATE JOIN MEMBER ON RROO_UPDATE.MemberID = MEMBER.MemberID WHERE MeetingID = $MeetingID ORDER BY TimeStamp DESC", $DB_Connection);
     $MyNum = mysql_num_rows($MeetingStats);
     $firephp->log($MyNum, 'Row Query');


     if($MyNum > $StatementCount){

     $Returns = array();

        while($Return = mysql_fetch_array($MeetingStats)){      
            array_push($Returns, $Return);      
         } 

         $NewReturns = array();
         $NewStats = $MyNum - $StatementCount;

         $firephp->log($NewStats, 'heres the new stats count');

         for($i = 0; $i < $NewStats; $i++){

            array_push($NewReturns, $Returns[$i]);

         }
         $Here = count($NewReturns);
         $firephp->log($Here, 'The length of the new returns array');

         $Finished = TRUE;
         echo json_encode($NewReturns);

     }

     else{
        sleep(3);
     }

 }       

&GT;

就像我说的那样,它在单元测试中恢复正常,这在我可以看到的所有方面都是相同的(我实际上将其粘贴到页面中)唯一的区别是回发在页面上的路由方式不同(到插件)但我已经搞乱了回调无济于事。是否有一些原因,StatementCount将不会重置并在此代码中发布?

1 个答案:

答案 0 :(得分:0)

我不认为statementCount是在回调中定义的,只是在执行ajax调用的函数中。

Here是一个问题和答案,应该可以帮助你做你想做的事。