JQuery甚至开了两次

时间:2016-02-01 15:15:42

标签: javascript jquery ajax

我有一个文本区域,旨在模仿聊天框的影响。当我按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的文件。有什么问题?

1 个答案:

答案 0 :(得分:1)

如果您使用.stopImmediatePropagation()而不是.stopPropagation(),则会在调用任何冗余处理程序之前终止该事件。

现在,当然,如果可行,则意味着您的设置代码运行了两次,可能是因为脚本文件无意中导入了两个<script>标记。关于.stopImmediatePropagation()没什么不好的,但是摆脱导致代码运行两次的任何东西都可能是好的。