【问题标题】:Displaying a success message after form submission提交表单后显示成功消息
【发布时间】:2016-03-19 06:50:58
【问题描述】:

我正在尝试理解 jquery,尤其是使用 ajax 在 mysql 表中插入和显示数据。

我一直在试验这段代码,它插入和显示来自 mysql 数据库的记录。我现在正试图让它在 id 为“info”的 div 中显示成功消息,同时还显示所有记录。我似乎只做一个,但从来没有两个。非常感谢。

form.php

     <script   src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
  </script>
  <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

 <script type="text/javascript">
           $(document).ready(function(){

                function showComment(){
                  $.ajax({
                    type:"post",
                    url:"process_ajax.php",
                    data:"action=showcomment",
                    success:function(data){
                         $("#comment").html(data);

                    }
                  });
                }
                showComment();

                $("#button").click(function(){

                      var username=$("#username").val();
                      var review=$("#review").val();

                      $.ajax({
                          type:"post",
                 url:"process_ajax.php",
                                 data:"username="+username+"&review="+review+"&action=addcomment",
                   success:function(data){
                       $("#info").html(data);
                         }

                      });

                });
           });
   </script>
  </head>

   <body>
    <form>
     Username : <input type="text" name="username" id="username"/>
           </br>
           Review : <input type="text" name="review" id="review" />
           </br>
           <input type="button" value="Send Comment" id="button">
            </form>
         <div id="info" />
           <ul id="comment"></ul>

   </body>
   </html>

Process_ajax.php

  <?php
 include_once("db_conx.php");

 $action=$_POST["action"];
  if($action=="showcomment"){
  $show="Select * from user_reviews ORDER by date desc";
  $result = $db_conx->query($show);
 while($row=mysqli_fetch_array($result)){
    echo "<li><b>$row[username]</b> : $row[review]</li>";
    }
    }
   else if($action=="addcomment"){
 $username= ($_POST['username']);
 $review= ($_POST['review']);

  $stmt = $db_conx->prepare('INSERT user_reviews SET username = ?,   review=?');
$stmt->bind_param('ss', $username, $review);
$stmt->execute();
if ($stmt->errno) {
 echo "There was an error in saving your review. Please try again." .          $stmt->error;
   }else{
   echo "Your review has been saved";
 }
 }
 ?>

【问题讨论】:

  • 一旦你开始做这件事,你会在这里得到一个错误'INSERT user_reviews SET username = ?, review=?',如果你有不止一行,那么......你会看到会发生什么。如果您要使用的是 UPDATE 而不是 INSERT,您将不会高兴。
  • 我开始了……它确实有效,但谢谢。我会尝试更新。

标签: php jquery ajax forms mysqli


【解决方案1】:

将记录数据保存为数组,将消息保存为普通var并创建json:

$list = '';
while($row=mysqli_fetch_array($result)){
    $list .= "\n<li><b>$row[username]</b> : $row[review]</li>";
} 

if ($stmt->errno) {
   $msg = "There was an error in saving your review. Please try again." .             $stmt->error;
}else{
   $msg = "Your review has been saved";
}

echo json_encode(["list"=>$list, "msg"=>$msg]);

记得把dataType放入Ajax:

type:"post",
dataType: "json"

然后在你的成功函数中,你可以访问变量:data.listdata.msg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多