在POST之前编码HTML

时间:2011-02-04 14:20:06

标签: html jquery post html-encode

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

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

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;

编辑:后续问题: Encoded HTML in database back to page

6 个答案:

答案 0 :(得分:8)

你不应该尝试用JavaScript编码。

您应该将其编码为服务器端。

可以通过JavaScript完成任何操作。

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

答案 1 :(得分:5)

George says is true。 但是,如果你必须在客户端编码字符串,我建议你使用JavaScript的encodeURIComponent()

答案 2 :(得分:1)

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

htmlencode

答案 3 :(得分:1)

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

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

所以这个:

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

将其记录到浏览器的控制台后,您将获得类似

的内容
&quot; That &quot;

而且:

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

将其记录到浏览器的控制台后,您将获得类似

的内容
blahblahblah That blahblahblah

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

在客户端使用escape(str)

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

它对我有用。