【发布时间】:2010-04-13 19:58:38
【问题描述】:
所以我正在尝试使用 jQuery 从 ajax 调用中插入数据。
我实际上使用了 jquery.form 插件,并使用 dataType: 'script' 提交了 ajax 表单。
响应是一个 jquery 表达式,其中包含一个 <%= javascript_escape(render ...) %> erb 标记(类似于 railscasts 第 136 集的指示)。然而最终结果是渲染的全文被插入,就好像这是要插入页面的内容一样,作为文本,而不是作为 dom 元素。
渲染开头有一些换行符的事实可能是原因吗?
Dom 文本:"\n \n &lt;li>....&lt;/li>"
我还尝试让 jQuery 将响应作为脚本读取并执行它,并使用基于原型的 rjs 东西,同样的效果,文本被插入到 dom 中。是否有任何原因会导致出现这种行为?
澄清一点:
我的 response.js.erb 是
jQuery("#content").append("<%= escape_javascript(render(:partial => "widgets")) %>");
jQuery("#information").text("Finally, something happened!");
append() 调用中的全文作为文本插入到#content 中。
更新:
我一直在研究这个问题。原来 rails 转义 字符的原因是因为它认为它正在呈现一个常规的 .html 文件。原因是它没有迹象表明 .js 即将到来,因为帖子是使用 iframe 完成的(帖子包含一个文件)。如果我在请求的末尾添加一个 .js,我可以做一个 respond_to do |format| format.js 但它不支持 http 帖子。有没有办法将其配置为接受 .js 请求上的帖子以执行操作?
【问题讨论】:
标签: jquery ruby-on-rails