所以我试图使用jquery插入ajax调用中的数据。
我实际上使用了jquery.form插件,并用
dataType: 'script'
.
响应是一个jquery表达式,它包含
<%= javascript_escape(render ...) %>
erb标签(类似于railscasts第136集的指令)。但是,最终的结果是,呈现的全文被插入,就好像是要作为文本而不是作为dom元素插入到页面中的内容一样。
渲染的开头有一些新行,这可能是原因吗?
DOM文本:
"\n \n <li>....</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操作请求的帖子?