使用Sinatra和jQuery而无需在POST上重定向

我正在尝试使用jQuery向我的Sinatra应用程序提交表单,但是当通过AJAX进行POST时,Sinatra应用程序正在显示一个空白页面。 我希望它保持在同一页面,并更新我在javascript中指定的内容。 这是我的代码,剥离了:

post '/register' do register( params ) end get '/register' do haml :register end 

这是我在haml文件中的javascript:

 :javascript $(function() { $("button#submit").click(function(){ $.ajax({ type: "POST", url: "/register", data: $('form.register').serialize(), success: function(){ $("#message").html("Successfully registered") }, error: function(){ $("#message").html("Not Successful") } }); }); }); 

试试这个,

 $(function() { $("form#the_id").submit(function(e){ e.preventDefault(); $.ajax({ type: "POST", url: "/register", data: $('form.register').serialize(), success: function(){ $("#message").html("Successfully registered") }, error: function(){ $("#message").html("Not Successful") } }); }); }); 

$("form#the_id").submit(...检测表单提交e.preventDefault();阻止表单提交。其余提交Ajax请求。

不要忘记将#the_id更改为您的表单ID。