在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的实施。
答案 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