如何阻止这个 json 转义 html?

发布于 2024-10-27 15:53:44 字数 1314 浏览 1 评论 0原文

我有一个返回用户评论的ajax 控件。它由 ac# ajax 处理程序页面提供服务,c# 匹配用户可以在评论中留下的时间跨度:

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\'alert(\'Flash Required\');\'>" + actualTimeSpan + "</a>");

这会生成以下 json:

 ({
     "numOfPages":"1",
     "pageIndex":"1",
     "comments": [
         {
             "user":"hmladmin",
             "created":"29/03/2011 16:41:20",
             "id":"1",
             "comment":"<a href='' onclick='alert('Flash Required');'>00:00:21</a>",
             "editable":"true",
             "reportable":"true"
         }
]
})

令人困惑的是,当我在 firebug 中查看 html 时,它会显示为:

<a );="" required="" flash="" onclick="alert(" href="">00:00:21</a>

我尝试过:

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\'alert(\"Flash Required\");\'>" + actualTimeSpan + "</a>");

并且

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\"alert(\"Flash Required\");\">" + actualTimeSpan + "</a>");

还有多种排列我只是无法弄清楚如何获取 json 和 c# 以在 onclick 事件中返回带有警报消息的锚标记。

有人可以帮助我弄清楚如何正确地逃避这个问题,这样这个问题就不会发生。

I have an ajax control that returns user comments. Its served by a c# ajax handler page and the c# matches a timespan that a user can leave in the comments:

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\'alert(\'Flash Required\');\'>" + actualTimeSpan + "</a>");

This produces the following json:

 ({
     "numOfPages":"1",
     "pageIndex":"1",
     "comments": [
         {
             "user":"hmladmin",
             "created":"29/03/2011 16:41:20",
             "id":"1",
             "comment":"<a href='' onclick='alert('Flash Required');'>00:00:21</a>",
             "editable":"true",
             "reportable":"true"
         }
]
})

Confusingly when I look at the html in firebug it comes out as:

<a );="" required="" flash="" onclick="alert(" href="">00:00:21</a>

Ive tried:

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\'alert(\"Flash Required\");\'>" + actualTimeSpan + "</a>");

and

commmentToDisplay = Regex.Replace(c.CommentText, timeSpanRegex, "<a href=\'\' onclick=\"alert(\"Flash Required\");\">" + actualTimeSpan + "</a>");

And multiple permutations of I just cannot work out how to get the json and c# to return an anchor tag with an alert message in the onclick event.

Can someone help me to work out how I escape this properly so this problem doesnt happen.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

贵在坚持 2024-11-03 15:53:44

问题是当您创建 HTML 字符串且与 JSON 无关时:

"<a href=\'\' onclick=\'alert(\'Flash Required\');\'>" + actualTimeSpan + "</a>"

可能应该是:

'<a href="something-sensible.html" onclick="alert("Flash Required"); return false;">' + actualTimeSpan + '</a>'

The problem is when you create the string of HTML and has nothing to do with JSON:

"<a href=\'\' onclick=\'alert(\'Flash Required\');\'>" + actualTimeSpan + "</a>"

should probably be:

'<a href="something-sensible.html" onclick="alert("Flash Required"); return false;">' + actualTimeSpan + '</a>'
三月梨花 2024-11-03 15:53:44

您在 'alert('Flash required');' 中嵌套了单引号,这是行不通的。您需要将一组更改为双引号,然后将它们转义为 JSON。例如 'alert(\"FlashRequired\");'

You've got nested single quotes in 'alert('Flash Required');' which won't work. You need to change one set to double-quotes then escape them (\") for JSON. e.g. 'alert(\"Flash Required\");'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文