gpt4 book ai didi

javascript - js.erb 正在渲染文本而不是 JS

转载 作者:行者123 更新时间:2023-11-28 04:48:09 26 4
gpt4 key购买 nike

尝试通过 Rails 中的 AJAX 更新搜索结果时遇到一个奇怪的问题,因为 Rails 正在 <pre> 中加载 js.erb标记页面上的原始文本,并且不会触发该文件中的任何 js。

在索引 Controller 中

if request.format.js?
respond_to do |format|
format.js { render layout: false }
end
end

表单设置为使用远程触发 AJAX:true

    = form_tag(search_path, id: "form", remote: true, :'data-type' => 'script') do

index.je.erb

alert('hello');
$("#results").innerHTML("<%= escape_javascript(render partial: 'results', locals: { results: @results } ) %>");

路线.rb

  match 'search', to:  'properties#index', via: :post, defaults: { format: 'js' }

在路由中,我尝试像以前一样从表单中强制使用 js,但没有什么区别。从日志中, Controller 正在接收 js 请求,但我在 CHrome 调试器中得到此信息:

(index):69 Resource interpreted as Document but transferred with MIME type text/javascript: "http://localhost:3000/search".

粘贴alert("Js is working")工作没有问题,所以 JS 在那里并触发

我被卡住了,现在应该可以工作了,是我错过了一些愚蠢的东西,还是我不知道的 Rails 5 中的新东西?

如果我可以提供更多信息来帮助您阻止我,请尽管询问!

提前致谢

最佳答案

那么好吧。 'remote: true' 似乎还不够!看起来确实是向 Controller 提交了ajax请求,但是 Controller 判定是文本。

添加

jQuery ->
$('#form').on "change", ->
$.ajax '/properties/index',
type: 'GET'
dataType: 'script'
data: $('form').serialize()

将表单提交劫持为纯ajax似乎解决了这一切!

关于javascript - js.erb 正在渲染文本而不是 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43182859/

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