如果身份验证正确/无效,请查找我用来重定向的代码。
post '/user/validate' do
login = params[:login]
pwd = params[:pwd]
if User.authenticate(login, pwd).nil?
@error = "Username and the password do not match"
puts "There is an error in authentication"
halt erb :login
else
redirect to('https://www.google.com')
end
end
这不起作用。虽然Web控制台显示正在向我的定向URL谷歌触发GET请求。浏览器中的地址栏不会加载新页面,它会继续显示上一个请求的模板/视图。
嗨,请参阅下面的ajax调用的 Javascript 代码,使用此重定向不起作用,但使用简单旧表单提交页面的东西重定向工作。
$(document).ready(function()
{
$("#send").click(function(event)
{
var data = { "login": $("#login").val(), "pwd": $("#pwd").val() };
$.post( '/user/validate', data, 'json');
});
});
普通 表单 标记
<form method="post" action="/user/validate">
<input type="submit" value="Signup" name="submit">
</form>
答案 0 :(得分:0)
首先回答原来的问题:
sinatra中的URL重定向不起作用? URL重定向适用于sinatra。
问题
您的问题是您使用jquery发布json数据。然后,您的JavaScript解决方案和表单解决方案之间的区别在于表单创建表单数据。
示例强>
要看一个卷曲示例的区别:
表格数据
curl -X POST 127.1:4567 / -d“foo = bar”
正常发布数据
curl -X POST -H“Content-Type:application / json”-d'{“payload”:“xyz”}'127.1:4567 /
你可以看到这些不一样。问题是现在默认情况下sinatra只解析表单数据。
Quickfix:request.body
如果你需要这些只是在位置,你可以手动解析params:
request.body.read
解决方案:rake-contrib
或者更好地使用rake-contrib。
gem install rake-contrib
需要它
要求'机架'
要求'rack / contrib'
加载use Rack::PostBodyContentTypeParser
使用这些rake负责解析params中的帖子数据。