发送Ajax请求时遇到问题。当你点击链接时,请求被发送到服务器3次并且答案没有到来。
为什么请求被发送三次以破坏?
我在查询的形成中出了什么问题?
代码:
run.html.erb
...
<%= link_to "Next", "#", :id => 'next', :class =>
...
run.js.erb
(function(){
$("#next").click(function(){
$.ajax({
type: 'POST',
url: '/engine/tff',
success: function(data){
alert("ok");
$("#question").html(data);
}
});
return false;
});
});
控制器
def tff
respond_to do |format|
format.js render :text => "hello"
end
end
答案 0 :(得分:2)
我猜测点击事件被绑定多次,可能是因为脚本被多次调用。不确定多次通话的原因是什么,因为我不熟悉rails。
你可以采取哪些措施来避免它在绑定之前取消绑定点击事件或使用on
api。
function ajaxRequest(){
$.ajax({
type: 'POST',
url: '/engine/tff',
success: function(data){
alert("ok");
$("#question").html(data);
}
});
return false;
}
$("#next").unbind("click").bind("click",ajaxRequest);
或
$(document).on("click","#next",ajaxRequest);
也不确定您是否尝试绑定文档就绪并且代码中存在拼写错误。但它应该像这样包装:
$(function(){
$("#next").click(ajaxRequest);
});
答案 1 :(得分:1)
我最近碰到的一件事是jquery尝试运行结果,因为默认的dataType将.js解释为脚本而不是文本。您可能需要在ajax调用中添加dataType: "text"
。我不知道这会如何转化为三个电话。
我认为返回false应该可以防止点击继续进行,但也许最好使用preventDefault()作为apneadiving建议。