Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以将一个javascript请求重定向到另一个javascript操作吗?_Javascript_Ruby On Rails_Firefox - Fatal编程技术网

我可以将一个javascript请求重定向到另一个javascript操作吗?

我可以将一个javascript请求重定向到另一个javascript操作吗?,javascript,ruby-on-rails,firefox,Javascript,Ruby On Rails,Firefox,我有一个带有索引和创建操作的评论控制器。这两种操作都响应html和js格式 每当我通过ajax收到create请求时,我都想添加新的注释,然后重定向到index.js,这样屏幕上的注释就可以在不重新加载页面的情况下得到更新 这种东西在Chrome中工作得很完美。但无论何时我在Firefox或IE中尝试这一点,结果是create.js的重定向都会出现在index.html中 即使我强制重定向为js: redirect_to polymorphic_path([@commentable, :comm

我有一个带有索引和创建操作的评论控制器。这两种操作都响应html和js格式

每当我通过ajax收到create请求时,我都想添加新的注释,然后重定向到index.js,这样屏幕上的注释就可以在不重新加载页面的情况下得到更新

这种东西在Chrome中工作得很完美。但无论何时我在Firefox或IE中尝试这一点,结果是create.js的重定向都会出现在index.html中

即使我强制重定向为js:

redirect_to polymorphic_path([@commentable, :comments]), :format => 'js'
它在Firefox和IE中以.html格式登陆


知道这里会发生什么吗?

浏览器以不同方式处理302个请求时会出现各种问题。一些丢失请求类型,另一些丢失请求方法(示例票证:)

我建议在使用JS时,不要重定向到新的URL,只需呈现相同的操作即可。比如说:

class CommentsController < ApplicationController
  def index 
    setup_for_index
    respond_to :html, :js
  end

  def create
    # Creation stuff...
    respond_to do |format|
      format.html {redirect_to :action => :index}
      format.js do
        setup_for_index
        render :action => :index
      end
    end
  end

  private

  def setup_for_index
    @comments = ...
  end
end
class CommentsController:index}
format.js do
为索引设置\u
呈现:操作=>:索引
结束
结束
结束
私有的
索引的def设置
@评论=。。。
结束
结束

不是:format=>js应该是多态路径多态路径([@commentable,:comments],:format=>'js'),这正是它应该的。事实证明,这种格式是正确强制的,所以我在大多数操作中使用了重定向到多态路径([@commentable,:comments],:format=>request.format.to_sym)。一般的问题是,像Chrome或Safari这样的Webkit浏览器在获得302重定向时会保留请求类型。Firefox和IE在请求后忘记了类型,因此必须手动设置。