2017-09-20 87 views
0

我有一个按钮点击AJAX调用。当我第一次点击按钮时,表单正在提交。如果出现错误,我将显示一条错误消息。AJAX没有调用第二次点击按钮使用jQuery点击事件

但是,当我再次点击按钮时,AJAX没有被第二次调用。 如果我尝试一条警报消息而不是AJAX调用,它工作正常。 如何在按钮单击时第二次发出AJAX请求?

这里是我的代码:

 <script type="text/javascript"> 

     $(document).ready(function() { 


      $("#del").on('click',function() 
      { 
      $.ajax({ 
       type: 'DELETE', 
       url: window.location.href, 
       success: function(data) { 
        var error = data.error; 
        var success = data.success; 
        if(error.length>0) 
        { 
         $("#errmsg").attr('class', 'alert alert-danger alert-dismissible'); 
         $('#str').text(error); 
         $('#errmsg').show(); 
        } 
        else 
        { 
        $("#errmsg").attr('class', 'alert alert-success alert-dismissible'); 
        $('#str').text(success); 
        $('#errmsg').show(); 
         setTimeout(function(){ 
         window.location.href= "/users"; 
         }, 2000); 
        } 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) 
       { 
        alert(textStatus+errorThrown); 
       } 
      }); 

      }); 



     }); 

     </script> 
+0

'type:'DELETE','? 'POST或GET'? – guradio

+1

@guradio,'键入:'DELETE'是有效的 – Satpal

+0

我看到谢谢澄清@Satpal – guradio

回答

0

关键在于你的脚本的成功处理程序。如果没有错误发生,您将在2秒后将页面位置(即重定向)更改为您的/ users URL。

我还假设这个将事件附加到按钮的特定脚本未包含在/ users页面中,这会导致事件处理程序在单击按钮时不再被触发。

因此,我建议您将这段代码放在一个脚本文件中,并在两个正在加载的页面中引用它。

0

我对此有几点想法。

你有#del按钮总是在DOM中吗?或者你删除它,然后将它附加到每个Ajax调用你的DOM上?

如果是,那么绑定将不起作用,因为您刚刚创建了一个新的#del按钮。

因此,不是,尝试,

<div id="del" onclick="del_me()">Delete</div> 

<script> 
del_me = function(){ 
//---- YOUR AJAX CALL HERE 
} 
</script> 

或者,如果你不希望这样,你就必须绑定点击创建按钮股利每一次。

相关问题