【发布时间】:2014-05-26 07:37:47
【问题描述】:
我正在 Sinatra 网站上实现注册的短信验证,我得到了以下代码:
post '/reg' do
phone = params[:phone].to_s
code = Random.rand(1000..9999).to_s
HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id + phone + '&text=' + code)
end
这会从 post 请求中获取用户电话,然后生成 4 位代码,并通过 get 请求将号码上的代码发送到短信服务。但是,页面不会重新加载,因为此时会打开模式对话框,用户应该在其中键入 code。打开模式的按钮同时通过 Ajax 使用以下代码发送 post:
$(document).ready(function(){
$("#sendsms").click(function(){
var phone = $("#phone").val();
$.ajax({
url: "/coop",
data: {"phone": phone},
type: "post"
});
});
});
在客户端检查用户的代码会很奇怪,这就是我得到这个动作路线的原因:
post '/coop/checkcode' do
usrcode = params[:code]
if code == usrcode
redirect '/reg/success'
else
redirect '/reg/fail'
end
end
但我不能只从 checkcode 路由中的第一个路由获取并键入 code var。但我需要。
是否存在任何可能的方法来传递该变量或以其他方式实现它?
提前谢谢你。
【问题讨论】: