gpt4 book ai didi

javascript - Ajax 响应未执行 (javascript)

转载 作者:行者123 更新时间:2023-11-28 20:15:53 25 4
gpt4 key购买 nike

我有一个远程表单,它提交给 search 操作。在 content#search 内部,我有以下内容:

respond_to do |format|
#format.html {}
format.js {}
end

我有一个 search.js.erb 文件,其中包含以下内容:

$('#ajaxstuffhere').html("<%= escape_javascript(render :partial => 'search') %>");

不幸的是,这根本不会修改主页中的 div

当我取消注释 format.html {} 时,它会使用 search.html.erb 内容更新 div。不幸的是,这使用 Controller 的默认布局进行渲染。

我想要的是在没有布局的情况下渲染此内容。 理想情况使用 JavaScript,这样我就可以一路更新一些 Google map 标记。

此表单代码:

<%= form_tag({:action => 'search'},:id => 'searchForm', :remote => true) do %>

生成此输出:

<form accept-charset="UTF-8" action="/search" data-remote="true" id="searchForm" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>

谁能告诉我我错过了什么?

编辑:我在想……如果部分内容以 HTML 形式返回,我无论如何都会点击 javascript 来捕获响应,这样我就可以更新其中的谷歌地图。无论哪种方式都很好,只要布局消失即可(不过我仍然更喜欢 js.erb 方式)。

JavaScript 响应的服务器日志显示如下:

 Rendered content/_search.html.erb (270.5ms)
Rendered content/search.js.erb within layouts/content (274.1ms)

但是页面根本没有更新。它似乎正在击中 javascript,并且部分似乎正在被调用

最佳答案

确保页面上存在 id 为 ajaxstuffhere 的元素。将您想要呈现的 HTML 放入 _search.html.erb 中。然后在没有布局的情况下进行渲染:

format.js { render layout: false }

尝试使用 Chrome 开发者工具来调试任何问题。使用网络选项卡查看实际响应,控制台将标记任何 js 错误。

另一种方法是将 html 部分呈现为 Ajax 响应并绑定(bind)到搜索表单的 Ajax 成功操作。

关于javascript - Ajax 响应未执行 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190700/

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