微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery Ajax发送两次第二次提交,发送三次三次

我有一个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() {
    ...
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐