使用jQuery单击事件在按钮单击时第二次调用AJAX

时间:2017-09-20 07:10:13

标签: javascript jquery ajax

按下按钮,我有一个AJAX调用。我第一次点击按钮时正在提交表单。如果出现错误,我会显示错误消息。

但是当我再次点击按钮时,第二次没有调用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>

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我对此有一些想法。

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

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

相反,试试,

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

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

或者,如果你不想这样,你必须在每次创建按钮时将点击绑定到div。