2

大多数MVC框架都支持在将服务器数据放到网页之前对其进行转义。jQuery我在's 的方法中找不到任何选项ajax来做同样的事情。事实上,我什至找不到一个原生 jQuery 函数来转义字符串以便在页面上正确显示(将内容放在 adiv中并调用.html(),不能保证保留空白)。为什么这个函数在 jQuery 中不可用,但你可以在underscoreprototype库中找到它?

4

1 回答 1

2

我认为您的意思是要防止 HTML 标记(例如<br/>, <a>, &)被视为 HTML 标记:您只想将其直接显示给用户。这有助于防止 XSS(跨站点脚本)等攻击。

这实际上用 jQuery 很容易,但它与转义不同。它只是使用text方法,这意味着内容被视为文本内容,而不是标记。

$.ajax({
    url: 'someurl',
    success: function(data) {
        $('#yourElement').text(data);
    }
});

它是不同的工作客户端到服务器端。在服务器端工作,您正在处理标记,需要对其进行转义以停止解析器将应为文本的内容视为标记。在客户端,标记已经被解析,所以你只需要告诉浏览器“这是文本内容”。这可以通过多种方式完成(innerTextdocument.createTextNode、甚至document.createCDATASection);jQuery 的data方法会为您做到这一点。

于 2012-08-28T09:31:32.123 回答