gpt4 book ai didi

javascript - 在 Ruby on Rails 中使用 AJAX 和 Javascript 响应

转载 作者:行者123 更新时间:2023-12-03 09:25:56 24 4
gpt4 key购买 nike

我在使用 AJAX 和 Ruby on Rails 与 JQuery 时遇到了一些问题。我正在尝试在 JQuery 中使用 AJAX 方法,用它执行 GET 请求,并将响应传输到 Ruby 中,以便我可以在我的 Controller 和 View 中使用它。这是我想在 View 底部运行的脚本:

function onClick() {
$.ajax({
url: "/posts.json",
type: "GET",
success: function(response) {
return response;
}
});
};

onClick();

有没有办法可以将这个响应传输到 ruby​​ 中,这样我就可以像这样在我的 Controller 中使用它?我希望“响应”是从 AJAX 请求返回的内容:

def index
@response = response
end

提前致谢!

最佳答案

您混淆了应用程序的前端后端。您的 JavaScript 代码位于前端,实际上在访问者的浏览器中运行;而你的 Rails Controller 位于后端,它在远离你的 Web 服务器上运行。可以在它们之间来回发送数据,但只能作为请求生命周期的一部分,我将其总结为:

  1. 访问者发出请求加载您的网页。
  2. 您的服务器和 Rails 接收请求,并决定如何将其路由 Controller
  3. 您的 Controller 处理请求,执行操作,然后呈现 View 为 HTML(或 JSON,或您想要发回的任何格式)。
  4. 此 HTML(或 JSON)作为响应发送回访问者。此响应还包含您的所有 JavaScript 代码(实际上,您的 JS 代码通常在单独的请求中发送,由访问者的浏览器并行发出......但它们最终都会出现在访问者的浏览器中)。

因此,您所要求的(让 JavaScript 调用将其数据发送到 Controller )不可能在一个请求中完成。您可以让 JavaScript 通过请求将该数据发送到 Controller ,但访问者不会看到该数据。

相反,我认为您只想让您的 Controller 发出此 Web 请求,或者 - 因为该请求无论如何都在您的同一服务器上 - 让您的 Controller 简单地加载数据库中的所有帖子并将该数据发送到看法。例如:

# app/controllers/things_controller.rb
class ThingsController
def index
@posts_json = Posts.all.to_json
end
end

然后,通过 View 中的一个小脚本将该变量传递到 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>

以上是一个相当标准的策略。希望这个解释有帮助!

关于javascript - 在 Ruby on Rails 中使用 AJAX 和 Javascript 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com