【问题标题】:How to Submit and Display on the same page using jQuery and MySQL?如何使用 jQuery 和 MySQL 在同一页面上提交和显示?
【发布时间】:2012-01-01 11:01:39
【问题描述】:

目标:

创建一个问答脚本(使用 PHP、JavaScript 和 jQuery),使用户能够提出问题并提交对所述问题的答案。 如果用户提交了新的答案,该答案将被插入到数据库中,并且包含答案的 div 将自动刷新以包含/查看新提交的答案。

问题:

提交答案后,提交过程不工作

这是我的代码:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script language="JavaScript">
    $(document).ready(function ()
      {
         /*Function # 4:
            Hide the AnswerForm and show  Answers where the div will be automatically refreshed upon answer submission.  <>>>> REVIEW!!! */
        function addAnswer(i,qID)
        {
            //alert("newanswer-q"+i);

            //$("newanswer-q"+i).style.display("none");
            //$("Answers-q"+i).style.display("block"); 
            changeDiv("Answers-q"+i, "block");

            //step # 1: define posted data to insert into database
            var name = $("input#name").val();;
            var answer = $("input#answer").val();;

             alert(name+","+answer);

             //step # 2: submit form to be processed by CHANGE.PHP to insert into DB
              $.ajax({
              type:"POST",
              url:"change.php",
              data: "questionID="+qID+"&count="+i+"&name="+name+"&answer="+answer,
              success: function(data)
                        {
                            if(data==0)
                            {
                                alert("YEEEEEEEEEESSSS!!!!!! :DDDDDD");
                                $("#Answer-q"+i).html("Finally!");
                            }
                            else
                            {
                                $("#Answer-q"+i).html("?!?!");
                            }
                        }
              });

            //Step # 3: refresh Answers div
            //changeDiv('Answers-q'+i, 'block');  

            $("#Answers-q"+i).load("printAnswers.php"); 
        }//end addAnswer


        $("#refreshAnswers").click(function(evt){
        $("#refreshAnswers").load("printAnswers.php");
        evt.preventDefault();
        }); 
    }
    </script>


        <style type="text/css">

        .answers
        {
            background-color: red; 
            position: relative; 
            display: block; 
            left: 1in;
        }

        .answerform
        {
            background-color: yellow; 
            position: relative; 
            display: block; 
            left: 1in;
        }
        .error
        {
            color: red;
            display:none;
        }
        </style>

    </head>
    <body>
        <?php   
            mysql_connect("#", "#", "#") or die(mysql_error()); 
            mysql_select_db("test") or die(mysql_error()); 

            $q1 = "SELECT * 
                   FROM questions";
            $allQ = mysql_query($q1);
            while($q = mysql_fetch_array($allQ)) 
            {
                $i = $q['qID'];

                echo '<div id="questions" style="background-color: blue;">';
                echo 'Question: '.$q['Question'].'<br><br>';
                echo 'posted by '.$q['userName'].'<br><br>';
                echo 'posted on '.$q['addDate'].'<br><br>';
                echo '</div>';?>

                <input type="button"  id="viewAnswers" name="viewAnswers" value="View Answers" onClick="changeDiv('Answers-q<?=$i?>', 'block');">
                <input type="button" id="addAnswer" name="addAnswer" value="Answer Question" onClick="changeDiv('newanswer-q<?=$i?>', 'block');">

                <div id="Answers-q<?=$i?>" class="answers">
                    <? include("printAnswers.php"); // display all answers to question # i
?>
                </div>

            <? echo '<div id="newanswer-q'.$i.'" class="answerform">'; 
                        include("addAnswerForm.php"); // display add new answer to question # i
               echo '</div>';
            } ?>
            <br>-------------------------<br>
            Go back to <a href="index.php">index.php</a>
    </body>
    </html>

更改.php

<?php

    mysql_connect('#', '#', '#') or die(mysql_error()); 

    mysql_select_db('test') or die(mysql_error()); 

    // Get values from form 
    $name=$_POST['name'];

    $answer=$_POST['answer'];

    $qID = $_POST['qID'];

    // Insert data into mysql 

    $sql="INSERT INTO answers(Answer, userName, qID)
          VALUES('$answer', '$name','$qID')";

    $result=mysql_query($sql);

?>

由于我在 PHP 和 jQuery 方面的初级技能,我已经被困在这个问题上几个小时了。

谁能给我一条救生索之类的东西?

【问题讨论】:

  • 一目了然...在这一行 &lt;? include("printAnswers.php"); // display all answers to question # i?&gt; 您正在注释掉结束的 php 括号。您需要删除评论,或者将右括号向下移动一行,使其不在评论后面。

标签: php javascript jquery forms submission


【解决方案1】:

数据的价值是什么?在您的成功功能中尝试console.log(data)。在我看来 change.php 不会产生任何输出,那么为什么 data 应该为零?

【讨论】:

  • 即检查是否为假。无论如何,我现在才解决了这个问题,我将表单输入插入到我的数据库中的次数与没有 qID 数据的 while 循环迭代一样多。 (到目前为止,请检查以下条目以获取我的代码...)
【解决方案2】:

您的数据似乎是通过“GET”请求发送的。

将 AJAX 数据对象更改为此:

data : {
  questionID : qid,
  count : i,
  name : name,
  answer : answer
}

如果您按照您的方式将它作为字符串传递,它会附加到 URL(成为 GET 请求),如果您将它作为对象传递,它会被发布。

【讨论】:

    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多