javascript - 呈现部分内容并转义书签的 html/javascript

标签 javascript jquery html ruby-on-rails ruby-on-rails-4

我正在尝试构建一个小书签,它向本地主机中的操作发出请求,并显示一个 div,其中包含从本地主机的 js 响应中获取的 html。我可以很好地发出请求,但是当 js 返回时,我在控制台中有“未定义”。我尝试使用 binding.pry 对其进行调试,但发现内容未正确评估。这就是我尝试评估它的方式:

content = "<%= escape_javascript(render(:partial => 'events/bookmarklet').html_safe) %>";

在 binding.pry 控制台中,我得到以下响应:

content = eval("<%= escape_javascript render(:partial => 'events/bookmarklet') %>");                                                                                  
SyntaxError: (eval):1: syntax error, unexpected '<'
<%= escape_javascript render(:partial => 'events/bookmarklet') %>
 ^
(eval):1: syntax error, unexpected ')', expecting end-of-input
<%= escape_javascript render(:partial => 'events/bookmarklet') %>
                                                              ^
from (pry):12:in `eval'

最佳答案

如果我正确理解您想做的事情,我不知道您为什么要尝试eval

如果你想通过 javascript 传递 html,请使用 jsonrender_to_string。所以对于你的例子:

# controller
def action_name
  content =
    render_to_string(
      partial: 'events/bookmarklet',
      formats: [:html], # always render html format, even if request wants json
      layout: false # render only partial, without any layout
    )

  render json: { html: content }
end

然后就可以通过data.html访问javascript中的内容了。

关于javascript - 呈现部分内容并转义书签的 html/javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758632/

相关文章:

javascript - 如何在服务器端验证 google reCaptcha?

javascript - 无论大小写如何,按字母顺序对字符串进行排序 - JavaScript

php - Javascript (jQuery) - $.post 的问题

jquery - 通过使用 JQuery 选择数组中的第一个复选框来选择所有复选框值

javascript - 使用 javascript 从浏览器中的流进行打印

javascript - 使用 Java Servlet 的 SweetAlert

javascript - 使用 chrome 进行 OfflineAudioContext FFT 分析

javascript - node-phantom 没有在网页上启用 javascript

php - 单击链接时运行 php 代码

html - 拉伸(stretch) 2 个 html 元素以适应父元素的全宽