gpt4 book ai didi

javascript - 包括 ActionController::Live 会中断现有的 AJAX 调用

转载 作者:行者123 更新时间:2023-11-28 01:05:54 24 4
gpt4 key购买 nike

我有一个具有多个操作/ View 的 Controller ,其中只有一个可以利用 ActionController::Live 模块。然而,一旦包含在内,AJAX 操作(在不相关的页面上)就不再在客户端上呈现。

以下代码可以正常运行:

my_controller.rb:

class MyController < ApplicationController
def index
// renders vanilla HTML/JS from index.html.erb
end

def update_index
// renders JavaScript from index.js.erb
end
end

index.html.erb:

<%= button_to({ controller: :my_controller, action: :update_index},
remote: true,
method: 'post') do %>
Update the text
<% end %>

<div id='content'>Some content</div>

update_index.js.erb:

$('#content').html('You clicked the button.');

问题:一旦我将 include ActionController::Live 添加到 Controller 中,甚至在为服务器端事件创建任何 JavaScript 或 Rails 句柄(效果很好)之前,我现有的代码就会停止工作。发生以下情况:

  • 服务器看到传入的 AJAX 请求
  • 调用所有适当的 Controller 函数
  • JavaScript 不在客户端执行。

最佳答案

如果您在 Controller 中包含了 ActionController::Live ,它似乎会更改返回客户端时的默认 header 情况。将以下行添加到我的非 SSE 操作中似乎可以解决问题:

response.headers["Content-Type"] = 'text/javascript'

但很想知道是否有更好的解决方案,或者我是否应该在所有适当的操作上执行此操作。

关于javascript - 包括 ActionController::Live 会中断现有的 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089220/

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