我有一个php文件“ popup_or_abbort.php”.如果用户已经有一个请求,则该请求将被取消,并且db中的行将使用mysql_query删除.如果我是第一次访问该页面并发送请求,它将发送一次请求.如果我第二次提交,则中止请求.如果我再次发送请求,而不更新页面,它将发送两次请求.请帮我解决这个问题.
$(document).ready(function(){
$("#request").click(function(){
uid = "<?php echo $user_id; ?>";
pid = "<?php echo $p_id; ?>";
$.ajax ({
type: "POST",
url: "inc/scripts/popup_or_abbort.php",
data: {"uid" : uid, "pid" : pid},
success: function(data){
if (data == "send_ok") {
$('#popup').fadeIn(300);
$('#sendbutton').click(function(){
pn = "<?php echo $p_name; ?>";
un = "<?php echo $username; ?>";
oid = "<?php echo $p_owner_id; ?>";
app = $('#application').val();
$.ajax({
type: "POST",
url: "inc/scripts/send_team_request.php",
data: {"uid" : uid, "pid" : pid, "pn" : pn, "un" : un, "oid" : oid, "app" : app},
success: function(data){
$('#request').html(data);
$('#application').val("");
$('#popup').fadeOut(300);
return false;
}
});
});
}
else {
$('#request').html(data);
return false;
}
}
});
return false;
});
return false;
});
解决方法:
您正在ajax回调中分配$(‘#sendbutton’).click(function(){处理程序.实际上,每次执行ajax回调时都会为其分配新的(相同)处理程序.因此,在单击#sendbutton时-多个相同的ajax请求被被执行.
而是在ajax调用之外将其委托一次:
$(document).on("click", "#sendbutton", function() {
...
});
标签:ajax,php,jquery
来源: https://codeday.me/bug/20191030/1969598.html