你好我是刚刚开始学习的ruby on rails。我想知道如何制作ajax请求。 我的js代码:
$(document).ready(function(){
$(".form_submit").click(function() {
var apiid = $('#apiid').val();
var apikey = $('#apikey').val();
var email = $('#email').val();
console.log("apiid = ",apiid , " apikey = ",apikey , " email = ",email);
});
});
现在我想将apiid,apikey和电子邮件发送给我的控制器。
def api
//here I want apiid, apikey,email from js
end
答案 0 :(得分:3)
一旦您通过js将数据发送到您的服务器,例如
$.post("/your/url",
{
apiid: "1",
apikey: "1",
email: "some@email.com"
});
然后,您可以通过params hash访问控制器中的这些参数:
def api
params[:apiid]
params[:apikey]
params[:email]
end
答案 1 :(得分:1)
假设您已经在Rails服务器上安装了RESTful API,那么您只需发送Ajax请求即可。如果您还没有这样做,本教程将教您如何做到这一点。
https://www.codementor.io/ruby-on-rails/tutorial/creating-simple-api-with-rails
之后你所要做的就是:
$.post("/path/to/url",
{
apiid: "1",
apikey: "1",
email: "some@email.com"
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
第一个参数是路由端点,第二个参数是你的json数据,第三个参数是服务器执行完更新后执行的回调函数。
答案 2 :(得分:1)
您可以在隐藏字段中设置apiid,apikey和email,也可以稍后在formData属性中进行分配。 此处的所有数据均来自表单。 url是表单动作,method是表单中的动作集。
注意:.form_submit
是一类表格而不是按钮。
$( '.form_submit' ).submit(function(e){
e.preventDefault();
var remoteCall = new RemoteCall(this);
remoteCall.ajax()
})
function RemoteCall(element){
this.url = element.action;
this.method = element.method;
this.dataType = 'json';
this.formData = $(element).serialize()
}
RemoteCall.prototype.ajax = function(){
$.ajax({ method: this.method,
url: this.url,
data: this.formData,
dataType: 'json'
}).done(function(msg){
alert('done');
}).fail(function(msg){ alert('Sorry request could not complete'); });
}
希望这能解决您的问题。
答案 3 :(得分:1)
您可以使用jQuery ajax选项data
在ajax请求中发送参数:
$(document).ready(function(){
$(".form_submit").click(function() {
var apiid = $('#apiid').val();
var apikey = $('#apikey').val();
var email = $('#email').val();
$.ajax(path_to_api_action, {
data: { apiid: apiid, apikey: apikey, email: email }
// Add other options
})
});
});