【问题标题】:data insert twice in database , ajax post数据在数据库中插入两次,ajax post
【发布时间】:2016-08-15 02:04:33
【问题描述】:

我有带有ajax post 和 php 的模态引导注册表单,但它在数据库中插入了两次数据

我的模态:

    <div id="register" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">New Member</h4>
      </div>
      <div class="modal-body">
      <div class="msg"></div>

      <form id="regist" action="/model/php/ajax.php"  method="post" accept-charset="utf-8" >
     <div class="form-group">
  <label for="usr">username:</label>
  <input type="text" name="user" class="form-control" id="usr">
</div>
 <div class="form-group">
  <label for="ugame">name in game :</label>
  <input type="text" name="ugame" class="form-control" id="ugame">
</div>
<div class="form-group">
  <label for="pwd">password :</label>
  <input type="password" name="pwd" class="form-control" id="pwd">
</div>
<div class="g-recaptcha" data-sitekey="<?php echo key; ?>"></div>
        <button type="submit"  id="signup" class="btn btn-success btn-lg">Signup<span class="glyphicon glyphicon-user"></span></button>
     </form>   </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-info" data-dismiss="modal">close</button>
      </div>
    </div>

  </div>
</div>

这里Ajax代码:

    <script>
   $(document).ready(function () {
        $("#regist").on("submit", function(e) {
            var postData = $(this).serializeArray();
            var formURL = $(this).attr("action");
            $.ajax({
                url: formURL,
                type: "POST",
                data: postData,
                success: function(data, textStatus, jqXHR) {
                    $('.msg').html(data);
                    $('.inf').remove();
                },
                error: function(jqXHR, status, error) {
                    console.log(status + ": " + error);
                }
            });
            e.preventDefault();
        });

        $("#signup").on('click', function() {
            $("#regist").submit();
        });
    });
</script>

发帖到[Action="ajax.php"],

这里ajax.php代码:

   <meta charset="UTF-8">
 <?php
  include '../db.php';
  include '../../lang/lang.ar.php';


           if(empty($_POST['user']) || empty($_POST['ugame']) || empty($_POST['pwd']))
           {
           echo $lang['empty'];
           }else{
            $q=mysqli_query($link,"SELECT * FROM accounts WHERE Username = '".$_POST['ugame']."'");
            $q2=mysqli_query($link,"SELECT * FROM customers WHERE uname = '".$_POST['user']."'");
            if(mysqli_num_rows($q) == 0)
            {
              echo $lang['ugame_!exist'];
            }else if(mysqli_num_rows($q2) != 0)
            {
               echo $lang['exist'];
            }else if(strpos($_POST['user'],';') !== false || strpos($_POST['user'],'-') !== false || strpos($_POST['user'],'#') !== false || strpos($_POST['user'],'@') !== false || strpos($_POST['user'],':') !== false  || strpos($_POST['user'],'*') !== false)
            {
                            echo $lang['not_allowed'];

            }else if(strpos($_POST['user'],' ') !== false){
                    echo $lang['space'];
            }else if(strlen($_POST['pwd']) < 6){
               echo $lang['small_pass'];
            }else if(strlen($_POST['user']) < 6){
               echo $lang['small_user'];
            }else if(strlen($_POST['pwd']) > 14){
               echo $lang['larg_pass'];
            }else if(strlen($_POST['user']) > 32){
               echo $lang['larg_user'];
            }else{

                $date = date("y-m-d");
                $stamp = date('Y-m-d\TH:i:s');

               $done = mysqli_query($link,"INSERT INTO customers  (uname,upass,ugame,date) VALUES ('".$_POST['user']."','".$_POST['pwd']."','".$_POST['ugame']."','".$date."')");
               mysqli_query($link,"INSERT INTO notification  (text,icon,date) VALUES ('New Account registred [ ".$_POST['user']." ]','icon-user','".$stamp."')");
               echo $lang['register_done'];

            }
           }
       ?>

【问题讨论】:

标签: php jquery ajax twitter-bootstrap mysqli


【解决方案1】:

您要发布两次表单。

当您单击form 中的submit 按钮时,它会触发submit 事件,您可以使用AJAX 请求处理该事件:

$("#regist").on("submit", function(e) {
    // your AJAX code
});

但是你有一个按钮的click事件处理程序:

$("#signup").on('click', function() {
    $("#regist").submit();
});

手动触发第二个submit 事件。只需完全删除 click 处理程序,因为默认情况下表单已经触发了 submit 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多