代码之家  ›  专栏  ›  技术社区  ›  Dmitriy Likhten

jquery rjs插入字符串vs dom

  •  1
  • Dmitriy Likhten  · 技术社区  · 15 年前

    所以我试图使用jquery插入ajax调用中的数据。

    我实际上使用了jquery.form插件,并用 dataType: 'script' .

    响应是一个jquery表达式,它包含 <%= javascript_escape(render ...) %> erb标签(类似于railscasts第136集的指令)。但是,最终的结果是,呈现的全文被插入,就好像是要作为文本而不是作为dom元素插入到页面中的内容一样。

    渲染的开头有一些新行,这可能是原因吗?

    DOM文本: "\n \n &lt;li>....&lt;/li>"

    我还尝试让jquery将响应作为脚本读取并执行它,并使用基于原型的rjs工具,同样的效果是,文本被插入到dom中。有没有什么理由会经历这样的行为?

    一点澄清:

    我的回答是

    jQuery("#content").append("<%= escape_javascript(render(:partial => "widgets")) %>");
    jQuery("#information").text("Finally, something happened!");
    

    append()调用中的全文作为文本插入到content中。

    更新:

    我一直在研究这个问题。原来rails之所以要转义<gt;字符是因为它认为它正在呈现一个常规的.html文件。原因是它没有显示.js即将到来,因为post是使用iframe完成的(post包含一个文件)。如果我在请求的末尾添加一个.js,我可以 respond_to do |format| format.js 但是它不支持http帖子。是否有方法将其配置为接受.js操作请求的帖子?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Quasipickle    15 年前

    我猜是因为你把数据类型设置为“脚本”。如果希望ajax调用的结果被视为dom元素,请将其更改为html。

    这还取决于如何将结果插入文档。我怀疑是这样,但是如果您使用的是.text()而不是.html(),您将得到纯文本而不是dom元素。