按下按钮,我有一个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>
答案 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。