【问题标题】:What do I need to escape in my HTML (JSON response)我需要在我的 HTML 中转义什么(JSON 响应)
【发布时间】:2009-06-14 22:56:28
【问题描述】:

我的 JSON 响应如下所示:

{rc: "200", test: "", user: "<div class='sub1'>
                <div class='avatar'>                    
                    <a href='/blah'>blah</a><br />
                    <strong>0</strong>
                </div>
                <div class='sl'>
                    <p>
                        you droppped the ball this time
                    </p>
                </div>
                <div class='clear'>
                </div>                        
            </div>"}

更新

我更新了我的代码以在键值上加上引号,但仍然不起作用:

{"rc": "200", "m" : "", "o": "<div class='s1'>
            <div class='avatar'>                    
                <a href='\/asdf'>asdf<\/a><br \/>
                <strong>0<\/strong>
            <\/div>
            <div class='sl'>
                <p>
                    444444444
                <\/p>
            <\/div>
            <div class='clear'>
            <\/div>                        
        <\/div>"}

【问题讨论】:

标签: javascript asp.net-mvc json


【解决方案1】:

我使用jsonlint 来验证您的最新示例,换行符就是它标记的内容。当它们被删除时,它会被验证。

{
    "rc": "200",
    "m" : "",
    "o": "<div class='s1'><div class='avatar'><a href='\/asdf'>asdf<\/a><br \/><strong>0<\/strong>      <\/div>    <div class='sl'><p>444444444<\/p><\/div><div class='clear'><\/div><\/div>"
}

【讨论】:

  • 如何以编程方式转义换行符?
【解决方案2】:

在您的示例中,您不必逃避任何事情。但是,如果 HTML 带有双引号,显然您必须将它们转义。

【讨论】:

  • 双引号和反斜杠字符。 "C:\xyz\" 会破坏一切。
【解决方案3】:

你的 HTML 值没问题,但是 JSON 对象的键必须用引号括起来。

来自JSON RFC

2.2。对象

表示一个对象结构 作为一对大括号
围绕零个或多个名称/值 对(或成员)。名字就是一个
字符串。

2.5。字符串

字符串的表示是 类似于 C 中使用的约定
编程语言家族。一种 字符串以
开头和结尾 引号。

此外,如果您在 HTML 页面的脚本标签内输出此 JSON 对象,则必须按照 this appendix in the HTML 4 specification 转义 HTML 结束标签的“”序列。

【讨论】:

  • 好的,我更新了我的代码,它看起来应该可以工作吗?
【解决方案4】:

您不需要在 javascript 字符串中转义 HTML。你到底想做什么/有什么问题?看看escape() 函数 - 它可能会有所帮助。

【讨论】:

  • 名字不好的 escape() 函数用于 URI 编码,这里需要的是 JavaScipt 字符串转义引号(单引号或双引号,取决于外引号和反斜杠)。
  • 他的示例字符串中没有双引号,如果有,使用转义符会将 " 转换为 %22 ,这将避免破坏字符串的任何问题。然后您可以轻松地使用 unescape() 来将其恢复为可读格式。
  • 但是,由于 JSON 是 JavaScript 对象文字表示法,字符串解码规则支持反斜杠转义,而不是 URI 转义。当内置规则起作用时,为什么要添加另一层必须由双方完成的自定义转义?
  • 好吧,鉴于 OP 说有问题,但代码示例中没有错误,我只是想猜测可能是什么问题。
  • 您确实需要在 HTML 文件中的 JS 字符串中转义 HTML。换句话说,如果您有一个带有
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2019-09-03
相关资源
最近更新 更多