[英]Ruby Rails - Javascript with AJAX POST working locally but not Heroku
[英]Working with AJAX and Javascript responses in Ruby on Rails
使用JQuery使用AJAX和Ruby on Rails時遇到一些麻煩。 我試圖在JQuery中使用AJAX方法,對它執行GET請求,然后將響應傳輸到Ruby中,以便可以在控制器和視圖中使用它。 這是我想在視圖底部運行的腳本:
function onClick() {
$.ajax({
url: "/posts.json",
type: "GET",
success: function(response) {
return response;
}
});
};
onClick();
有什么方法可以將響應轉換為紅寶石,這樣就可以在控制器中使用它了嗎? 我希望“響應”是AJAX請求返回的內容:
def index
@response = response
end
提前致謝!
您正在混合應用程序的前端和后端 。 您的JavaScript代碼位於前端,該前端實際上在訪問者的瀏覽器中運行; 而Rails控制器位於后端,后端在Web服務器上運行得很遠。 可以在它們之間來回發送數據,但是僅作為請求生命周期的一部分,我將其總結為:
因此,您要的-進行JavaScript調用將其數據發送到控制器-不可能在一個請求中完成。 您可以讓JavaScript通過新請求將數據發送到控制器,但訪問者看不到。
相反,我認為您只想讓您的控制器發出此Web請求,或者-因為請求仍然在同一台服務器上-讓您的控制器簡單地加載數據庫中的所有Post並將該數據發送到視圖。 例如:
# app/controllers/things_controller.rb
class ThingsController
def index
@posts_json = Posts.all.to_json
end
end
然后,通過視圖中的小腳本將該變量傳遞到JavaScript中(這有些棘手;您需要告訴Rails可以按原樣打印JSON字符串,而無需對其進行消毒):
# app/views/things/index.html.erb
<h1> Posts! </h1>
<script type='text/javascript'>
var posts = <%=raw @posts_json %>;
alert("I've got " + posts.length + " posts loaded.");
</script>
以上是一個相當標准的策略。 希望這個解釋有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.