Javascript 在RubyonRails中,从RJS响应生成新的XMLHttpRequest的正确方法是什么?

Javascript 在RubyonRails中,从RJS响应生成新的XMLHttpRequest的正确方法是什么?,javascript,ruby-on-rails,ajax,prototypejs,rjs,Javascript,Ruby On Rails,Ajax,Prototypejs,Rjs,我正试图更接近于我上一个问题的解决方案 我想尝试的计划如下: 用户从RoR控制器请求操作。 操作进行一些数据库查询、进行一些计算、设置一些会话变量并返回一些RJS代码作为响应。这段代码可以是 更新进度条并发出另一个ajax请求。 如果所有处理完成,则显示最终结果,例如图表 浏览器评估RJ的javascript表示。它可能会导致另一个递归?递归是允许的吗?请求,或仅为用户显示结果。 所以,这次我的问题是:如何将XMLHttpRequest调用正确地嵌入到rjs代码中 我想知道的是: 我应该创建一个

我正试图更接近于我上一个问题的解决方案

我想尝试的计划如下:

用户从RoR控制器请求操作。 操作进行一些数据库查询、进行一些计算、设置一些会话变量并返回一些RJS代码作为响应。这段代码可以是 更新进度条并发出另一个ajax请求。 如果所有处理完成,则显示最终结果,例如图表 浏览器评估RJ的javascript表示。它可能会导致另一个递归?递归是允许的吗?请求,或仅为用户显示结果。 所以,这次我的问题是:如何将XMLHttpRequest调用正确地嵌入到rjs代码中

我想知道的是:

我应该创建一个新线程来避免堆栈溢出吗。我应该使用什么rails助手(如果有的话)

以前有没有人在Rails或其他框架上做过类似的事情


我的想法明智吗?

你可能会发现RJS信息现在很难获得,我认为不引人注目的JavaScript在Rails社区获得了更多的关注。你所描述的肯定是可能的。我的建议是花一点时间用jQuery学习AJAX。以下是您可能采取的一些步骤:1向控制器操作发出GET请求,2做点什么,用JSON响应,3在成功处理程序代码客户端中,确定是否需要再次调用服务器

检查jQuery上的Railscast,这是抄本

jQuery$.get或$.getJSON

Rails的respond_to block,请查看此处的wants.js代码

您可以使用序列化为JSON的Ruby对象进行响应: render:json=>@thing.to_json

使用$.getJSON将响应反序列化为JavaScript对象,因此您可以使用点语法轻松访问属性。e、 g.伪代码: $.getJSON'/url到thing.js',functionthing{ if thing.status!=“完成”{/*再次调用函数*/} };


这样,一旦“事情”完成,该函数就不会被调用。熟悉客户端和服务器部件的职责最初可能会让人望而生畏,但从长远来看,它会让您开发出更具动态性和交互性的web应用程序。

它不是递归的;来自浏览器的后续请求将是全新的HTTP事务。