2013-03-13 31 views
1

我想使用jQuery将表单提交给我的Sinatra应用程序,但是当通过AJAX发布时,Sinatra应用程序显示空白页面。我希望它保持在同一页面上,并更新我在JavaScript中指定的内容。这里是我的代码,精简:在不重定向的情况下使用Sinatra和jQuery

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") 
           } 
         }); 
       }); 
     }); 
+0

什么是您呈现的HTML? – Strelok 2013-03-13 05:36:37

+0

没有Ajax调用不会重定向页面。您是否设置了要提交的按钮类型? – texasbruce 2013-03-13 07:49:48

回答

5

试试这个,

$(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。

相关问题