2016-12-21 26 views
1

你好,我剛剛開始學習Ruby on Rails。我想知道我該如何製作ajax請求。 我的js代碼:如何在rails上製作紅寶石的ajax請求?

$(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 
+1

還有人互聯網上的教程和指南,你嘗試過什麼嗎? –

回答

3

一旦你通過JS將數據發送到服務器的東西,如

$.post("/your/url", 
{ 
    apiid: "1", 
    apikey: "1", 
    email: "[email protected]" 
}); 

然後你可以通過params哈希在控制器中訪問這些參數:

def api 
    params[:apiid] 
    params[:apikey] 
    params[:email] 
end 
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: "[email protected]" 
}, 
function(data, status){ 
    alert("Data: " + data + "\nStatus: " + status); 
}); 

第一個參數是路由端點,第二個參數是你的JSON數據,第三個參數是一個回調函數,在服務器完成更新時執行。

1

您可以在隱藏字段中設置apiid,apikey和電子郵件,也可以稍後在formData屬性中進行分配。 這裏的所有數據都是從表單中抓取的。 url是表單動作,方法是在表單中設置的動作。

注意:.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'); }); 
} 

希望這會解決您的問題。

+0

我想知道如何在控制器中獲取數據,比如在php中我們使用'$ _POST ['apiid']'來獲取數據,所以在紅寶石中如何獲取控制器中的數據? –

+1

要訪問控制器中提交的表單數據,您可以使用參數。舉個例子,如果你發送post請求作爲apiid:'sad'by ajax。你可以作爲params [:apiid]訪問。如果您不知道字段名稱是什麼,您可以檢查參數以查看所有表單數據。 –

1

您可以使用jQuery ajax選項data發送PARAMS在一個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 
    }) 
    }); 
});