繁体   English   中英

chrome和firefox显示的页码不同

[英]chrome and firefox have different page numbers displayed

我在下面的代码行中向用户指出了他们当前在页面总数中所位于的页面:

<h1><?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

上面的代码可能如下所示: 1 OF 7 3 OF 5 5 OF 6等。

但是有一个问题,我目前在google chrome和mozilla firefox之间遇到问题。 下面我有一个链接到应用在这里 您能否同时在Firefox和chrome中打开该应用程序,并按照以下步骤操作,您将能够看到问题所在:

  1. 打开我在chrome和firefox中提供的URL

  2. 在两个页面上,请输入多个会话(键入7),然后在两个浏览器上提交页面。

  3. 您将在两种浏览器的顶部看到一个标题: "CREATING QUESTIONS AND ANSWERS: SESSION 1 OF 7"

  4. 在两个浏览器的页面上,单击“添加问题”按钮3次,以便添加3行,每行包含一个图像文件输入。

  5. 现在,对于两种浏览器,单击页面底部的“提交详细信息”按钮。

现在,我想让您看到标题"CREATING QUESTIONS AND ANSWERS: SESSION ... OF 7" 现在说。 在firefox中,由于您已经完成了第一页,因此它现在工作在第二页,因此工作状态非常好,这就是为什么它指出"CREATING QUESTIONS AND ANSWERS: SESSION 2 OF 7"

但是在Chrome浏览器中效果不佳。 而是在chrome中指出"CREATING QUESTIONS AND ANSWERS: SESSION 5 OF 7" 这是因为如果是chrome,它会为已添加的每一行添加一个数字(要添加一行,表单会上传到其自身页面)。 因此,提交第一页后,新页将添加一个数字以使其成为2 OF 7但是在第一页中添加3行使其在chrome中成为5 OF 7

所以我的问题是,为什么chrome与Firefox的工作方式不同,是否有办法让chrome与Firefox的工作方式相同,以便用户每次进入下一页时都能显示正确的页码?

下面是完整的代码:

<?php

    session_start();


    if(isset($_POST['sessionNum'])){
                //Declare my counter for the first time

                $_SESSION['initial_count'] = $_POST['sessionNum'];
                $_SESSION['sessionNum'] = intval($_POST['sessionNum']);
                $_SESSION['sessionCount'] = 1;

        }

    else if ($_SESSION['sessionCount'] < $_SESSION['sessionNum']) {
        $_SESSION['sessionCount']++;
    }


    $sessionMinus =  $_SESSION['sessionCount'];

    if ($sessionMinus == $_SESSION['initial_count']){ 

        $action = 'create_session2.php'; 

    }else if($sessionMinus != $_SESSION['initial_count']){ 

        $action = $_SERVER['PHP_SELF']; 

    }

    ?>

    <script type="text/javascript">


    function insertQuestion(form) {   


        var $tbody = $('#qandatbl > tbody'); 
        var $tr = $("<tr class='optionAndAnswer' align='center'>");
        var $image = $("<td class='image'></td>"); 


    var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
        "<p class='imagef1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p><p class='imagef1_upload_form' align='center'><br/><label>" + 
        "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
        "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 
        "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");     

        $image.append($fileImage);


        $tr.append($image);  
        $tbody.append($tr); 



    }


                 function showConfirm(){

             var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would not be able to go back and change any details towards Questions, Options and Answers for your Session." + "\n" + "\n" + "Are you sure you want to Proceed?" + "\n" );

             if (confirmMsg==true)
             {
             submitform();   
         }
    }

             function submitform()
    {
        var fieldvalue = $("#QandA").val();
        $.post("insertQuestion.php", $("#QandA").serialize() ,function(data){
            var QandAO = document.getElementById("QandA");
            QandAO.submit();
        });  
        alert("Your Details for this Session has been submitted"); 
    }




    </script>

    </head>

    <body>

    <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">

    <h1>CREATING QUESTIONS AND ANSWERS: SESSION <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

    <div id="detailsBlock">

    <table id="questionBtn" align="center">
    <tr>
    <th>
    <input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
    </th>
    </tr>
    </table>

    </div>
    <hr/>

    <div id="details">
    <table id="qandatbl" align="center">
    <thead>
    <tr>
        <th class="image">Image</th>
    </tr>
    </thead>
    <tbody>
    </tbody>
    </table>
    </div>

    <p><input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" onClick="myClickHandler(); return false;" /></p>

    </form>

             <script type="text/javascript">

    function myClickHandler(){
         if(validation()){
                    showConfirm();
         }
    }

    </script>



    </body>
    </html>

您的代码并没有做得太深(您已经在此处发布了相关信息吗?),但是您的错误可能是由于您使用$_SESSION变量来存储不应存在的数据。

例如,如果您的用户打开两个选项卡并同时浏览页面,那将是一团糟。

为每个流创建一个唯一的标识符,将数据存储在数据库中,并使用$_GET$_POST在页面之间传输此标识符(您也可以将数据存储在会话中,但是存储在该标识符索引的数组中)。

哦,还有iframe? 避免他们! 使用jQuery插件来处理您的上传。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM