我正在尝试使用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";
}
?>
答案 0 :(得分:0)
可能存在以下任何情况
类重复产品有两个元素。如果是这种情况,请使用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();
}
});
});
然后将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();
}
});
});