使用jQuery AJAX更新时,内容在Internet Explorer中消失

3

我有一个表单,它被包裹在一个带有id为content的div中:

<div id="content">
    <%= render :partial => 'shared/signup' %>
</div>

shared/_signup.html.erb 包含:

<%= form_tag sign_me_up_path, :remote => true do %>
 ...
<% end %>

如果用户提交表单时出现错误,我会呈现 create.js.erb 文件,其中只包含以下内容:
$("#content").html("<%= escape_javascript(render :partial => 'shared/signup') %>");

使用Internet Explorer,这将简单地删除#content中的所有内容,但在所有其他浏览器中都能很好地工作。我会感激任何帮助/见解。


如果你执行 $("#content").html('foo') 会发生什么?'foo' 会出现在 #content 中还是 div 仍然为空白?你是否在 IE 中安装了 JavaScript 调试工具?你能够检查 AJAX 调用的响应吗?如果可以,"<%= escape_javascript(...) %>" 应该只是一个 HTML 标记字符串。你看到了什么? - Samo
2个回答

2
我正在使用相同的模式——远程表单提交、JavaScript响应,用Jquery(1.4.4)渲染一个局部页面并填充div的HTML。我在IE中看到了同样的行为,但后来发现这是HTML局部中的一个笔误导致的。

其他浏览器对未关闭的标签处理得更友好,我怀疑你有类似的问题——验证一下局部渲染的HTML。


我也考虑过这个问题,但他正在渲染与初始页面加载时相同的部分。如果IE可以渲染一次,那么你会认为它可以再次渲染。但我想检查一下也无妨。 - Samo

-1

我怀疑那不是他的问题。这篇文章涉及到 AJAX 调用后回调函数没有触发的问题。他没有任何回调函数,因为他的控制器只是渲染一个 js.erb 模板... - Samo
@Samo,我认为给James一些探索的路径来找出为什么它不起作用是值得的。我搜索了一些关于IE和内容未呈现的问题,并且http://www.stjhimy.com/posts/7-creating-a-100-ajax-crud-using-rails-3-and-unobtrusive-javascript,特别是摘录“Ps1:使用html5使我们的表单和链接远程(:remote => true),因此它在任何版本的INTERNET EXPLORER中都无法工作。”让我相信,值得探索远程链接和IE之间的现有问题。就我个人而言,我认为这是一个有用的答案。=) - clemensp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接