所以我试图用jQuery从ajax调用插入数据。jQuery RJS插入字符串与dom
我实际上使用jquery.form插件,并提交了一个与dataType: 'script'
提交的ajax表单。
响应是一个包含<%= javascript_escape(render ...) %>
erb标记的jquery表达式(类似于railscasts第136集指示要做的事情)。然而,最终的结果是渲染的全文被插入,就像插入到页面中的内容一样,作为文本而不是dom元素。
事实上渲染器在开始时有一些换行符是原因吗?
DOM文字:"\n \n <li>....</li>"
我也试过有jQuery的只是读取响应为脚本并执行它,并且使用了基于原型的RJS的东西,同样的效果,文本插入到DOM。有没有什么原因会导致这种行为?
澄清一下:
我response.js.erb是
jQuery("#content").append("<%= escape_javascript(render(:partial => "widgets")) %>");
jQuery("#information").text("Finally, something happened!");
追加()调用内部的全文作为文本插入到#内容。
更新:
我一直在对这个问题进行一些研究。原因是为什么rails逃避<>字符是因为它认为它正在呈现常规的.html文件。原因是它没有指示.js即将到来,因为该帖子是使用iframe完成的(该帖子包含一个文件)。如果我在请求的末尾添加.js,我可以执行respond_to do |format| format.js
,但它不支持http帖子。有没有办法将其配置为接受针对某个操作的.js请求的帖子?
不是,我考虑过改变对HTML的响应,只是让脚本将它注入适当的位置,但我想要更多的RJS风格行为。看到我的澄清。 – 2010-04-13 20:23:22
看起来这将是必须的答案。 Rails似乎不支持在不进行HTML实体转义的情况下渲染erb模板。因此,当输出发送到iframe时,所有内容都会被转义并且无法使用。 – 2010-04-14 14:40:13