在Ruby on Rails中使用AJAX和Javascript响应
Working with AJAX and Javascript responses in Ruby on Rails
我在使用AJAX和Ruby on Rails与JQuery时遇到了一点麻烦。我尝试使用JQuery中的AJAX方法,使用它进行GET请求,并将响应传输到Ruby中,以便我可以在控制器和视图中使用它。下面是我想在视图底部运行的脚本:
function onClick() {
$.ajax({
url: "/posts.json",
type: "GET",
success: function(response) {
return response;
}
});
};
onClick();
是否有一种方法可以将此响应转换为ruby,这样我就可以在我的控制器中使用它?我希望'response'是AJAX请求返回的内容:
def index
@response = response
end
提前感谢!
您混淆了应用程序的前端和后端。你的JavaScript代码位于前端,它实际上在访问者的浏览器中运行;而您的Rails控制器位于后端,它在您的web服务器上运行得很远。可以在它们之间来回发送数据,但只能作为请求生命周期的一部分,我将其总结为:
- 访问者发出请求来加载你的网页。
- 您的服务器&Rails接收请求,并决定如何将路由到控制器
- 你的控制器处理请求,做的东西,然后呈现一个视图成HTML(或JSON,或任何格式你想发回)。
- 此HTML(或JSON)作为响应发送回访问者。这个响应包含你所有的JavaScript代码,以及(实际上,你的JS代码通常在一个单独的请求中发送,由访问者的浏览器并行进行…但最终都会进入访问者的浏览器)。
所以,你所要求的——让一个JavaScript调用将它的数据发送给控制器——是不可能在一个请求中完成的。您可以让JavaScript通过新请求向控制器发送数据,但访问者不会看到。
相反,我认为你只是想让你的控制器发出这个web请求,或者——因为请求是在你的同一台服务器上——让你的控制器简单地加载数据库中的所有Posts并将该数据发送给视图。例如:
# 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>
以上是一个相当标准的策略。希望这个解释对你有所帮助!
相关文章:
- 如何使用httpwebrequest在c#中获得网页(使用ajax/javascript的php)的最终响应
- ajax javascript 500 error
- 无法使用ajax/javascript将文件上传到perl脚本
- Ajax Javascript Get JSON value
- 使用ajax/javascript调用php函数
- AJAX - Javascript array to php
- 使用ajax/javascript选择项目并将其添加回mysql
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 通知Ajax/Javascript后台PHP已经完成
- AJAX (JavaScript / PHP), FormData not sending
- AJAX/javascript:解析包含数组的JSON
- AJAX/JavaScript搜索性能优于Java/Oracle
- 使用ajax/javascript和setTimeout重新加载页面2次
- JQuery+Ajax:JavaScript运行时错误:需要函数
- Ajax/Javascript用户状态更新
- 在AJAX javascript中从ASHX获取数据
- 使用 json ajax javascript jquery 和 java 的自动完成搜索栏(无 PHP)
- Ajax JavaScript 复选框更改不起作用
- 如何将值从 AJAX Javascript 传递到 PHP 文件
- 使用 AngularJS/AJAX/JavaScript 调用 PHP