Jquery 按Enter键时咖啡会反复发送PUT请求
我有一个coffeescript代码,它接受“Enter”键,以便通过ajax提交表单Jquery 按Enter键时咖啡会反复发送PUT请求,jquery,ruby-on-rails,json,coffeescript,Jquery,Ruby On Rails,Json,Coffeescript,我有一个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"
$(".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
类应答器控制器I18n.t('answer.notice'))
其他的
flash[:error]=@answer.errors.full_messages.to_句子
将_重定向到@answer
结束
结束
结束
然后我把它改成这样:
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
类应答器控制器@answer}
其他的
format.json{render:json=>@answer.errors.full_messages.to_句子}输出javascript消息
结束
结束
结束
结束
重复请求的原因是因为它有一个循环请求“GET/answers/1”“当浏览器注册键盘输入时,按键事件被发送到元素。”-
这对您的情况意味着您经常遇到键盘输入并运行该功能。我相信你所追求的是
@哪一个错误?你说这是反复提交的。现在,它应该只在每次注册keyup事件时提交(大多数情况下每个字母提交一次),它仍然会重复发送请求。尝试通过console.log输出,但它只打印一次。因此,重复的按键可能已经解决了,但是在发送ajax请求时有一些奇怪的地方。
$(".text_field.comment").keyup (e) ->