2012-04-15 139 views
2

发送Ajax请求时出现问题。当你点击链接请求发送到服务器3次,答案没有来。rails ajax请求

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

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

代码:

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

你应该避免点击动作 – apneadiving 2012-04-15 16:24:52

+0

回报虚假的默认应采取照顾...... – DGM 2012-04-15 16:28:55

回答

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

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

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