我有这个coffeescript代码接受“Enter”按键以通过ajax提交表单
$(".text_field.comment").keypress (e) ->
if e.which is 13
$(this).blur()
form = $(this).closest("form")
$.ajax
url: form.attr('action')
type: "PUT"
dataType: "json"
data: form.serialize()
false
这里发生的是它反复发送请求近20次!必须采取哪些措施来阻止重复发送请求?
愚蠢的我!答案在于我的控制器。在我有这个之前:
class AnswersController < ApplicationController
before_filter :authenticate_user!
def update
@answer = Answer.find(params[:id])
if @answer.update_attributes(params[:answer])
redirect_to(@answer,
:notice => I18n.t('answer.notice'))
else
flash[:error] = @answer.errors.full_messages.to_sentence
redirect_to @answer
end
end
end
然后我改为:
class AnswersController < ApplicationController
before_filter :authenticate_user!
def update
@answer = Answer.find(params[:id])
respond_to do |format|
if @answer.update_attributes(params[:answer])
format.json { render :json => @answer }
else
format.json { render :json => @answer.errors.full_messages.to_sentence } #output javascript messages
end
end
end
end
重复请求的原因是因为它有一个循环请求“GET / answers / 1”
答案 0 :(得分:0)
“当浏览器注册键盘输入时,按键事件被发送到元素。” - jQuery API
这对您的情况意味着您经常遇到键盘输入并运行该功能。我相信你所追求的是keyup
。
$(".text_field.comment").keyup (e) ->