【问题标题】:unexpected end of input php jQuery输入php jQuery的意外结束
【发布时间】:2015-07-13 11:50:56
【问题描述】:

我在一台机器上编写了相同的代码,它工作正常,但在另一台机器上,相同的代码给出了错误的意外输入结束。这让我发疯,因为它为什么会发生。请任何可以提供帮助的人。这些是我正在处理的文件。

编辑:我正在制作一个用于学习目的的小型在线测试应用程序。测试开始时,出现第一个问题,单击下一步按钮时,url 会更改为应有的内容,但下一个问题不会出现,并且控制台中的错误表示输入意外结束。由于我所有的括号都可以,所以我找不到错误。请帮忙!!

TestStart.php

<?php
    session_start();
    if(isset($_SESSION['TestId']))
    {
        $TestId = $_SESSION['TestId'];
    }
    include('Config.php');
    include('Reference.php');
    $query = "select * from testquestions where testid='".$TestId."'";
    $res = mysql_query($query);

    if(mysql_num_rows($res) > 0)
    {
        $z = array();
        while($fetch = mysql_fetch_array($res))
        {
            $z[]=$fetch['QId']; 
        }
        $y = implode(",", $z);

        $_SESSION['QIds']=$z;

    }
    else{

        echo mysql_error();
    }
?>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12" id="resultDiv">
                <div class="col-md-12" id="qtext"></div>
                <div class="col-md-12">

                    <div class="col-md-3">
                        <div class="col-md-12">
                            <input type="radio" id="optionA"name="options" value="A"><span id="optA"></span>
                        </div>
                        <div class="col-md-12">
                            <input type="radio" id="optionB" name="options" Value="B"><span id="optB"></span>
                        </div>
                    </div>

                    <div class="col-md-3">
                        <div class="col-md-12">
                            <input type="radio" id="optionC" name="options" value="C"><span id="optC"></span>
                        </div>
                        <div class="col-md-12">
                            <input type="radio" id="optionD" name="options" value="D"><span id="optD"></span> 
                        </div>
                    </div>
                </div>
                <div id="nextbuttondiv"></div>
            </div>
        </div>
    </div>
    <script>
        $(document).ready(function(){
            <?php
                if(isset($_GET['qno'])&&isset($_GET['qindex']))
                {
                    $qno = $_GET['qno'];
                    $qindex = $_GET['qindex'];
                }
                else{
                    $qno = '1';
                    $qindex = '0';
                }

            ?>
            var qno = <?php echo $qno;?>;
            var qindex = <?php echo $qindex;?>;
            var qidsarrCm = '<?php echo $y;?>';
            var arrQid = qidsarrCm.split(",");

            var totalQuestions = arrQid.length;


            $.ajax({
                type : "post",
                url : "GetQuestionForTest.php",
                data : {
                    "quId" : arrQid[qindex]
                },
                dataType : "json",
                success : function(data){
                    alert('xy');
                    console.log(data);
                    $.each(data, function(){
                        var qText = this.questiontext;
                        var optionA = this.OptionA;
                        var optionB = this.OptionB;
                        var optionC = this.OptionC;
                        var optionD = this.OptionD;
                        var nxtBtn = this.NextButton;

                        $('#qtext').text(qText);
                        $('#optA').text(optionA);
                        $('#optB').text(optionB);
                        $('#optC').text(optionC);
                        $('#optD').text(optionD);
                        $('#nextbuttondiv').html(nxtBtn);
                    });
                },
                error: function(data, statusCode, xhr){
                    alert(statusCode);
                    console.log(data);
                    console.log(xhr);
                }
            });
            $('input[type=radio]').on('click',function(){
                $('.nxtbtn').removeAttr('disabled');
            });



            $('body').on('click','.nxtbtn', function(){
                $.ajax({
                    type : "post",
                    url : "SaveTestAnswers.php",
                    data : {
                        "qid" : arrQid[qindex],
                        "ansId" : $('input[name=options]:checked').val(),
                        "stuId" : <?php echo $_SESSION['CurrentUser'];?>,
                        "testId" : <?php echo $TestId;?>
                    },  
                    dataType : "json",
                    success : function(data){

                        if(data.toString() == "true"){
                            qindex = qindex + 1;
                            qno = qno + 1;
                            if(qno > totalQuestions){
                                    window.location.href="TestFinish.php";
                            }
                                else{
                                        window.location.href="TestStart.php?qno="+qno+"&qindex="+qindex;
                                }

                        }
                        else{
                            alert(data + "Please resubmit the answer");
                        }
                    },
                    error : function(data, statusCode, xhr){
                    alert(statusCode);
                        console.log(data);
                        console.log(xhr);
                    }
                });
            });
        });
    </script>
</body>         

GetQuestionForTest.php

<?php
    $questionid = $_POST['quId'];
    include('Config.php');

    $query = "select * from questionstable where questionid = '".$questionid."'";
    $result = mysql_query($query);
    if(mysql_num_rows($result) > 0)
    {
        $someArray = [];
        while($fetch = mysql_fetch_array($result))
        {
            array_push($someArray,[
            'questiontext' => $fetch['questiontext'],
            'OptionA' => $fetch['optionA'],
            'OptionB' => $fetch['optionB'],
            'OptionC' => $fetch['optionC'],
            'OptionD' => $fetch['optionD'],
            'NextButton' => '<button  class="btn btn-success nxtbtn" disabled >Next</button>'
            ]);
        }
        $someJSON = json_encode($someArray);
        echo $someJSON; 
    }
    else{
        echo mysql_error();
    }
?>

SaveTestAnswers.php

<?php

    $qid = $_POST['qid'];
    $ansId = $_POST['ansId'];
    $stuId = $_POST['stuId'];
    $testId = $_POST['testId'];


    include('Config.php');
    $query = "insert into testattemptedanswers(StudentId,TestId,QuestionId,AnswerGiven) values('".$stuId."','".$testId."','".$qid."','".$ansId."')";
    $res = mysql_query($query);
    if($res){
        echo 'true';
    }
    else{
        echo 'false'.mysql_error();
    }
?>  

【问题讨论】:

  • 请告诉我们您遇到的确切错误。发布代码是不够的。
  • 考虑使用mysqli或pdo
  • @Pushkar 我已经简要解释了一遍。这可能会对您有所帮助。

标签: php jquery input


【解决方案1】:

缺少引号 -

var qno = <?php echo $qno;?>;
var qindex = <?php echo $qindex;?>;

把它们改成 -

var qno = '<?php echo $qno;?>';
var qindex = '<?php echo $qindex;?>';

还有——

 data : {
     "qid" : arrQid[qindex],
     "ansId" : $('input[name=options]:checked').val(),
     "stuId" : '<?php echo $_SESSION['CurrentUser'];?>',
     "testId" : '<?php echo $TestId;?>'
 },

【讨论】:

  • @sgtBose 但是值被发布到没有单引号的 php 脚本中。
  • 用ajax发布?
  • 是的,它们是用 ajax 发布的,而且 php 代码中的值只是数值。
  • 不,随着数据进入 php 脚本,无论有无引号都可以正常工作。我猜引号没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2016-08-05
  • 2018-01-23
  • 2020-07-10
  • 2020-09-04
相关资源
最近更新 更多