繁体   English   中英

在POST之前编码HTML

[英]Encode HTML before POST

我有以下脚本,它编码它收到的一些值,但它似乎不编码双引号。

在发布之前如何正确编码完整值?

function htmlEncode(value){ 
    return $('<div/>').text(value).html(); 
} 

上面的脚本给了我这个:

&lt;p&gt;Test&amp;nbsp; &lt;span style="color: #ffffff"&gt;&lt;strong&gt;&lt;span style="background-color: #ff0000"&gt;1+1+1=3&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;

我需要它给我这个:

&lt;p&gt;Test&amp;nbsp; &lt;span style=&quot;color: #ffffff&quot;&gt;&lt;strong&gt;&lt;span style=&quot;background-color: #ff0000&quot;&gt;1+1+1=3&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;

编辑:后续问题: 数据库中的编码HTML返回页面

你不应该尝试使用JavaScript编码。

你应该将它编码为服务器端。

任何可以用JavaScript完成的事情都可以撤消。

如果您还检查它是否已在服务器上编码,则在JavaScript中对其进行编码是有效的,但请记住: 可以禁用JavaScript。

乔治说的是真的 但是,如果你必须在客户端编码字符串,我建议你使用JavaScript的encodeURIComponent()

我遇到了类似的问题。 我只是在javascript中使用了replace方法。 这是一篇很好的文章: http//www.w3schools.com/jsref/jsref_replace.asp

基本上,replace方法的作用是将它所发现的字符与您指示为替换字符的字符进行交换或替换。

所以这:

var str=' " That " ';
str = str.replace(/"/g,'&quot;');

一旦将其记录到浏览器的控制台中,您就会得到类似的结果

&quot; That &quot;

还有这个:

var str=' " That " ';
str = str.replace(/"/g,'blahblahblah');

一旦将其记录到浏览器的控制台中,您就会得到类似的结果

blahblahblah That blahblahblah

你可以在js中使用这个模块,而不需要jQuery:

的HTMLEncode

您可以重用php.js项目中的函数 - htmlentitiesget_html_translation_table

在客户端使用escape(str)

HttpUtility.UrlDecode(str,System.Text.Encoding.Default); 在服务器端

它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM