AJAX被调用两次

时间:2015-11-23 06:42:58

标签: php jquery ajax

我正在尝试使用ajax& amp; PHP。我有一个模态弹出窗口,询问用户输入,并在模态弹出窗口中有文本字段和提交按钮。当用户填写字段并点击提交按钮时,会调用ajax,它会向数据库添加值。

$('.dup-product').click(function(){    
    var owners = $(".total_product_owner").val();
        $(".getmailfields").empty();
        if(owners == 0){
            $(".getmailfields").empty();
        } else {
            for (i = 1; i <= owners; i++) {        
                $(".getmailfields").append("<div class='form-group email_forms'><label class='control-label col-sm-2' for=invite-"+i+">Member "+i+" email</label><div class='albox col-sm-10'><input type='email' class='form-control' name='invitefriends[]' placeholder='sam@unclejohn.com' required></div></div>");
            }
        }
});

以下代码是来自模态弹出窗口的操作

$('.duplicate_product').click(function(){
    var prodid = $(this).attr('pid');
    var userid = $(this).attr('oid');  
    $.ajax({
        type : "post",
        url : "user.php",
        data: { 
                product_id: prodid,
                user_id: userid,
             },
        cache:false,
        success : function(html){
              location.reload();
            }
        });
});

当我从弹出窗口点击提交时,数据会被添加到数据库两次。我可以解决它吗?

PHP:

<?php   
$pid = $_POST['product_id']; 
$uid = $_POST['user_id'];

if (isset($pid) && !empty($uid)){  
    duplicate($pid,$uid);
} else {   
    echo "Are you trying to do something nasty??";
}

duplicate($pid,$uid){
 echo "Duplicated";
}

?>

1 个答案:

答案 0 :(得分:0)

可能存在以下任何情况

  1. 类重复产品有两个元素。如果是这种情况,请使用id绑定click事件

    $('#duplicate_product').click(function(){
    var prodid = $(this).attr('pid');
    var userid = $(this).attr('oid');  
    $.ajax({
        type : "post",
        url : "user.php",
        data: { 
                product_id: prodid,
                user_id: userid,
             },
        cache:false,
        success : function(html){
              location.reload();
            }
        });
    

    });

  2. 然后将id="duplicate_product"添加到按钮 2.事件一次又一次地绑定到按钮。在这种情况下使用下面的代码

    $('.duplicate_product').unbind('click').bind('click', function(){
    var prodid = $(this).attr('pid');
    var userid = $(this).attr('oid');  
    $.ajax({
        type : "post",
        url : "user.php",
        data: { 
                product_id: prodid,
                user_id: userid,
             },
        cache:false,
        success : function(html){
              location.reload();
            }
        });
    

    });