【问题标题】:jQuery Ajax JSON response with <img /> tag breaks in IE带有 <img /> 标记的 jQuery Ajax JSON 响应在 IE 中中断
【发布时间】:2012-10-25 11:18:58
【问题描述】:

我在使用 IE 时遇到问题(我正在 IE9 中进行测试,但我相信它在以前的版本中的行为方式也会相同)。

我从 PHP 发送的响应如下:

{"success":true,"content":"<img src=\"\/media\/page\/1528484482.jpg\" width=\"140\" height=\"140\" alt=\"1528484482.jpg\" \/>"}

它在 Firefox、Chrome、Safari、Opera 等中运行良好 - 但在 IE 中无法运行。 响应是一个空对象。

当我将响应更改为以下内容时,它可以正常工作 - 唯一的区别是关闭 img 标签之前的正斜杠:

{"success":true,"content":"<img src=\"\/media\/page\/1528484482.jpg\" width=\"140\" height=\"140\" alt=\"1528484482.jpg\">"}

有什么方法可以解析“内容”响应,使其不会在 IE 中中断?

【问题讨论】:

  • 为什么不包括右斜线呢?您确实说过这可以解决问题吗?
  • 那是正确的——如果没有右斜线就没有问题。
  • 另外,我不认为你需要逃避所有这些斜线,虽然它不应该有所作为。
  • 如上所示,它们都被转义了 - 这是 php 使用 json_encode() 的实际响应。
  • 在你json_encode()之后给它打一个str_replace('\/','')

标签: javascript jquery ajax internet-explorer xhtml


【解决方案1】:

(这是一个建议,而不是一个解决方案) 分离表示层(js/html [how])和领域层(php [what])。

域层决定返回什么数据。 表示层决定了数据的呈现方式。

返回图片路径,让表现层决定如何向用户展示图片。


现在您的问题的解决方案将在文档类型的声明上。 我想问题在于没有声明文档类型,而 IE 将 XHMTL 作为其默认文档类型。
在 XHTML 中,标签必须正确关闭。 http://www.w3schools.com/tags/tag_img.asp

我想其余的浏览器都采用 HTML5,并且它不需要图像上的结束标记。

【讨论】:

  • 嗨 Tomas - 非常感谢您的建议。然而,有时很难将大块代码作为单独的部分返回给 javascript。我正在使用 HTML5,但我喜欢使用斜杠结束标签 - 因为在 HTML5 中可以同时使用这两种标签。我相信 IE 让我别无选择,只能使用不带右斜杠的标签。
猜你喜欢
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多