0

このコードが単体テストでは正常に機能するのに、ページでは機能しないのはなぜですか? 私は Firebug と FirePHP を配置しており、変数をハードコーディングすると問題なく通過することがわかります。単体テストでは操作は int を問題なく渡していますが、parseInt、Math.floor、および他の多くの風変わりなメソッドを試しました。 statementCount の値は投稿されません。アヤックス:

            //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);
     }

 }       

?>

私が言ったように、それは私が見ることができるすべての側面で同じである単体テストで問題なく戻ってきます(実際にそれをページにコピーして貼り付けました)唯一の違いは、ポストバックがページ上で異なる方法でルーティングされることです(プラグインへ) )しかし、私は無駄にコールバックをいじりました。statementCount がリセットされず、このコードで投稿されない理由はありますか?

4

1 に答える 1

0

コールバック内で定義されているとは思いませんstatementCount.ajax呼び出しを実行する関数でのみ定義されています。

これは、あなたが望むことをするのに役立つはずの質問と回答です.

于 2013-03-12T07:19:49.040 に答える