Как отправить и отобразить на одной странице, используя jQuery и MySQL? - PullRequest
2 голосов
/ 01 января 2012

Цель:

Создать сценарий вопросов и ответов (с использованием 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>

Change.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.

Может кто-нибудь бросить мне спасательный круг или что-то еще?

Ответы [ 2 ]

0 голосов
/ 03 января 2012

Ваши данные, похоже, отправлены с помощью запроса "GET".

Измените объект данных AJAX на этот:

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

Если вы передадите его как строку, как вы это сделали, он будет добавлен к URL (становится запросом GET), если вы передадите его как объект, он будет опубликован.

0 голосов
/ 02 января 2012

Какова ценность данных?Попробуйте console.log(data) в вашей функции успеха.Мне кажется, change.php не выдает никаких данных, так почему данные должны равняться нулю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...