我的模板中有以下html代码:
<div id="my_choices">
<form>
<input type="radio" name="status" value="fast">
<input type="radio" name="status" value="slow">
</form>
</div>
处理以下js代码:
$(document).on('change', '#my_choices form input[type=radio]', function(){
var my_form = $(this).closest('form').get(0);
$(my_form).ajaxSubmit({
type: 'post',
url: '/my/url/',
})
});
选择单选按钮时,我经常会注意到,在chrome调试器的网络选项卡中,请求会被发送两次。我并不总是以这种方式发生,它有时只发送一个信号。由于数据库锁定错误,第二个请求总是引发500 internal server error
。我用的是Sqlite3。
我努力修复重复的js信号: - 我认为问题可能来自重复的连续点击,因此我在触发器上禁用输入,然后在处理完成后重新启用它们。没有改变 - 我假设问题可能是ajax请求,所以我将请求“同步”。当然,它阻止了第二个事件,并且在调用第二个事件时没有错误。但是,仍然会发送第二个信号,从用户的角度来看,阻塞体验非常糟糕。