2010-05-16 112 views
1

我有一个关于将值插入到我的MYSQL数据库的输入字段的问题。输入字段中的HTML标记

首先,我有一个表单将数据从输入字段保存到数据库。一个额外的脚本过滤DIODE Á =>Á到html代码。所以Állo将被保存为Állo

当我从数据库插入数据到'div'时,它显示Állo。当我将数据插入到一个输入字段它显示Állo

我在做什么错

使用jQuery将数据保存到数据库与没有pagerefresh的.post的$方法。我还使用JQUERY $ .post方法从数据库获取数据,而不使用pagerefresh。

希望有人能帮助。

+0

为什么要将普通字符保存为HTML实体?你只需要编码在HTML中有特殊含义的字符('<>&',有时候是'''') – 2010-05-16 07:52:05

+0

我不知道更好的方法来确保在所有浏览器上都显示相同的字符。并非所有浏览器都显示良好,有时显示为'?' – Megapool020 2010-05-16 07:57:07

+0

正确的方法是与字符编码一致,选择一个(UTF-8是最好的)并坚持下去,并且记得告诉浏览器你也在使用它。 – 2010-05-16 07:57:45

回答

0

你真的不应该将数据保存到数据库中。如果需要的话,你应该保存Állo并使用htmlspecialshars($my_value_from_db);(这是php不知道你服务器上的runnung是什么,但是perl或其他语言有类似的功能)。如果您无法更改保存过程或更正旧条目,则可以使用html_entity_decode($bla)来显示输入字段中显示的值(这是再次使用php)

+0

这个伎俩,我查了编码,我需要utf8_encode我给我回的字符串。 – Megapool020 2010-05-16 13:16:23

0

您将HTML插入到div中,但直接设置输入的DOM值属性。

HTML实体转换为它在HTML中表示的内容,但value属性期望文本不会将任何特殊含义归于&

您应该将实际数据存储在数据库中,而不是其HTML视图。转换为HTML应该在服务器端程序的外面处理(如果您使用的是MVC设计模式,则在视图中)。

+0

Ok,tnx,但是当我从数据库插入Á到输入字段时,我的浏览器显示'?'或其他符号而不是Á。我不想更改我的浏览器设置,因为我的页面的查看者必须看到Á而不是'?' – Megapool020 2010-05-16 08:22:34

0

有一个脚本可以反转编码脚本的功能,并在输出到表单域时调用它。