【问题标题】:AJAX not working when more than one line is in the partial部分中包含多行时,AJAX 不起作用
【发布时间】:2012-02-05 07:45:04
【问题描述】:

使用 AJAX 渲染部分

$('#next_videos').replaceWith('<%= render(:partial => 'videos')%>');

是我的js

我简化了部分即时渲染以隔离问题

<p> Testing </p>

所以这很好,但是当你添加任何 ruby​​ cmets 时,例如

<p> Testing </p>
<%# holder = videos_counter %>

什么都没有发生。服务器显示它处理得很好,但网页上没有发生任何变化。关于这里发生了什么的任何线索?谢谢。

使用 rails 3.1.1、sqlite3、formtastic 2.0.2、devise 1.5.1 以及任何时候

编辑:

当我的部分中有超过一行时,AJAX 更新不起作用。例如,

<p> Testing </p> <p> Testing </p>

会起作用,但是

<p> Testing </p>
<p> Testing </p>

不会。

【问题讨论】:

  • 您是否在 FireBug 控制台中看到错误?
  • @Darin 所有 Firebug 显示的是未修改的 304,但是当 AJAX 工作和不工作时都会出现
  • 史蒂夫,当您查看响应选项卡时,您是否看到服务器发送的 HTML?
  • @Darin 是的,它工作时和不工作时是一样的。这就是我得到的: $('#next_videos').replaceWith('

    测试

    测试

    ');
  • @Darin 304 未修改仅在我尝试多次使用远程链接时才会发生。无论我是否能在网页上看到更改,我第一次使用它时都会得到 200 OK。

标签: ruby-on-rails ajax ruby-on-rails-3 jquery


【解决方案1】:

您可以尝试使用 escape_javascript 助手或其 j 别名转义标记:

$('#next_videos').replaceWith('<%=j render(:partial => 'videos') %>');

【讨论】:

  • 你是老板,成功了!我阅读了有关转义 javascript 的问题,但在我使用的示例中,他们没有使用它。为什么它对第一行标记起作用(没有 escaping_javascript),但对任何后续标记都不起作用?感谢您的帮助!
  • @Steve,它不适用于第二行,因为脚本中有一个新行会破坏您的 javascript。如果您的标记包含例如单引号,它也会破坏它。这就是为什么你应该总是逃避它的原因。
  • @DarinDimitrov 对我来说即使在转义 js 后它也不起作用,知道还有什么问题吗? (我正在尝试通过 ajax 加载 3 个部分)
猜你喜欢
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多