2011-06-24 60 views
0

我有一个使用了jQuery插件jEditable(通过AJAX在线编辑)的网站。事情是,如果你输入类似“Entrées”(这是为了编辑餐馆菜单,所以这样的输入应该是预期的),获取该值的AJAX PHP脚本将接收“Entrées”。我如何确保发送的值正确发送?jQuery代码正确

什么是更怪异的是,数据库值存储为“ENTRA©上课”,但网页上显示时,它会显示“主菜”正确。

回答

0

我想我可能已经解决了这个问题。使用escape()而不是encodeURI()正常工作。有人知道为什么会这样吗?

越狱()返回:ENTR%E9es

是encodeURI()返回:ENTR%C3%A9es

很奇怪。

+1

转义为ascii字符工作,但如果想要在ASCII范围外发送字符,您必须使用encodeURI并在服务器端对其进行uridecode。这与您的页面或代码无关,因为您的ajax(get)参数作为url查询字符串发送,并且具有其自己的规则。 – nima

1

确保不只是在其中输入文本的形式,但也是在它的显示使用UTF8编码的页面。如果您的“测试”看到接收到的内容是一个简单的echo ...; exit;,那么很可能此页面不是以UTF8格式呈现的。

+0

我有'在标题'。这足够吗?我是否也应该使用PHP来设置标题的字符集? (顺便说一句,我让AJAX脚本直接输出原始输入到.txt文件,它仍然显示“Entrées”。) – TerranRich

+0

从服务器发送的标头通常更好,一些浏览器使用它们如果即使文件包含不同的文件,它们也是可用的。 – ThiefMaster

0

你必须在发送前使用JavaScript是encodeURI()函数的字符串。

+0

你碰巧知道如何在jEditable的情况下做到这一点?文档有点不完整。我必须通过注释来搜索比文档本身更有用的信息。 :P – TerranRich

+0

我想通了(只编辑了源代码JS文件本身)。但是,现在收到的输入是“Entr%C3%A9es”,与“Entrées”相同。 WTH是怎么回事?> – TerranRich

+0

我正要说:)好了,现在在服务器端使用http://msdn.microsoft.com/en-us/library/6196h3wt.aspx – nima