我有一个文本区域,旨在模仿聊天框的影响。当我按Enter键时,它会发出一个AJAX请求。问题是请求是两次:
$('html').on('keyup', '#message-text', function(e){
if(e.which == 13 && !e.shiftKey){
e.preventDefault();
e.stopPropagation();
$.ajax({...},
success: function(){
console.log("*****POST****");
},
error: function(){
console.log("failure");
}
})
}
});
每当我按下回车键时,AJAX请求成功完成两次,当按下按钮一次时,控制台****POST****
中会记录两次。一个日志的来源是messages.js:43
(我的文件)和我不熟悉VM3339:43
的文件。有什么问题?
答案 0 :(得分:1)
如果您使用.stopImmediatePropagation()
而不是.stopPropagation()
,则会在调用任何冗余处理程序之前终止该事件。
现在,当然,如果可行,则意味着您的设置代码运行了两次,可能是因为脚本文件无意中导入了两个<script>
标记。关于.stopImmediatePropagation()
没什么不好的,但是摆脱导致代码运行两次的任何东西都可能是好的。