1

发送 Ajax 请求时出现问题。当你点击链接请求被发送到服务器 3 次并且没有得到答复。

为什么请求被发送 3 次破坏?

我在查询的形成中哪里出错了?

代码:

运行.html.erb

...
<%= link_to "Next", "#", :id => 'next', :class =>
...

运行.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
4

2 回答 2

2

我猜点击事件被多次绑定可能是因为脚本被多次调用。由于我不熟悉rails,因此不确定多次调用的原因是什么。

你可以做些什么来避免它是在绑定之前取消绑定点击事件或使用onapi。

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);
});
于 2012-04-15T16:39:08.727 回答
1

我最近遇到的一件事是 jquery 尝试运行结果,因为默认的 dataType 将 .js 解释为脚本,而不是文本。您可能需要dataType: "text"在 ajax 调用中添加一个。我不明白这如何转化为三个电话。

我认为返回 false 应该是为了防止点击继续,但也许使用 preventDefault() 作为 apneadiving 建议的更好的形式。

于 2012-04-15T16:33:46.980 回答