使用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。