3

我有一个 php 文件“popup_or_abbort.php”如果用户已经有请求,那么请求将被中止,数据库中的行将被 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;           
});
4

1 回答 1

4

您正在$('#sendbutton').click(function(){ajax 回调中分配处理程序。每次执行 ajax 回调时,它实际上都会分配新的(相同的)处理程序。因此,#sendbutton单击时 - 正在执行多个相同的 ajax 请求。

相反,在 ajax 调用之外委托它一次:

$(document).on("click", "#sendbutton", function() {
    ...
});
于 2013-07-13T14:08:49.687 回答