代码之家  ›  专栏  ›  技术社区  ›  wds

在Ror2.x中使用Response_to实现ajax的优雅降级

  •  3
  • wds  · 技术社区  · 17 年前

    我想知道你是否可以使用Response_来获得相同的行为,如果可以,这是否被认为是良好的形式,为什么?

    所以我想做的是:

    def function
      respond_to do |format|
        format.js do
          basic_stuff
        end
        format.html do
          basic_stuff
          user_redirect
        end
      end
    end
    

    这似乎有点违反了DRY原则,我可能遗漏了一些关于用户和服务器如何在这里交互的信息。老实说,API文档并没有让我完全明白。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Dave Nolan    17 年前

    您可以像这样重构:

    def function
      basic_stuff # executed regardless of the mime types accepted
      respond_to do |format|
        format.html do
          user_redirect
        end
      end
      # will fall back rendering the default view - which you should ensure will be js
    end
    

    request.xhr? 查看请求 X-Requested-With 标头(查看它是否包含“XMLHttpRequest”)。 respond_to

    您可以使用其中一个来实现某种优雅的递减。

    但是 您将无法使用 xhr? 除非您的ajax调用正在设置该标头(Prototype会自动执行此操作),否则将进行优雅的降级。

    此外 提供了更大的灵活性,即从同一块发送xml、json、js等。

    所以我推荐 在这里

    推荐文章