如何在rails上的ruby中发出ajax请求?

你好我是刚刚开始学习的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 

一旦你通过js将数据发送到你的服务器

 $.post("/your/url", { apiid: "1", apikey: "1", email: "some@email.com" }); 

然后,您可以通过params哈希在控制器中访问这些参数:

 def api params[:apiid] params[:apikey] params[:email] end 

假设您已经在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数据,第三个参数是在服务器完成执行更新时执行的回调函数。

您可以在隐藏字段中设置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'); }); } 

希望这能解决你的问题。

您可以使用jQuery ajax选项data在ajax请求中发送params:

 $(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 }) }); });