如何实现注册的短信验证?

时间:2014-05-10 17:58:50

标签: javascript jquery ruby ajax sinatra

在Sinatra上构建的网站,并在行动中获得了下一个代码:

post '/registration/sms/:number' do
  code = Random.rand(1111..9999).to_s
  phone = params[:phone].to_s
  HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id +'&to=' + phone + '&text=' + code)
  # check code
end

有了这个观点:

%form{:method => "post"}
  %div.form-group
    %label Phone number
    %input#phone.form-control{:name => "phone", :placeholder => "7 950 123 45 67"}
  %button#sendsms.btn.btn-default{"data-toggle" => "modal", "data-target" => "#myModal"} Send

这个JS:

$("#sendsms").click(function(){
  var phone = $("#phone").val();
  $.ajax({
    url: "/registration/sms",
    data: {"phone": phone},
    type: "post"
  })
})

我认为这个JS应该发送发布请求来执行操作,这会向发送短信的 sms.ru 创建新请求。但它不起作用,我无法弄清楚原因。

提前感谢您的帮助,特别是没有JS的实施。

1 个答案:

答案 0 :(得分:0)

您的sinatra代码需要/registration/sms/:number,但您的ajax会在帖子数据中以/registration/sms发送给phone: XXXXX

将您的服务器代码更改为:

post '/registration/sms' do
  code = Random.rand(1111..9999).to_s
  phone = params[:phone].to_s
  HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id +'&to=' + phone + '&text=' + code)
  # check code
end