如何在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 }) }); });