2010-03-17 75 views
2

我正在使用XMLHttpRequest将一个JSON字符串发布到PHP。 JSON对象在JavaScript中创建,并使用json.org中的JSON2.js创建代表对象的JSON字符串。JSON htmlentities javascript

JSON.stringify(object);

每当对象包含具有特殊字符在它的字符串,例如é,JavaScript不给出任何错误,但PHP接收空数组

[]

是否有产生完全相同的resutls作为PHP函数

htmlentities()

的数据是一个JavaScript功能通过POST发送,所以下列功能

escape() 
encodeURI() 
encodeURIComponent() 

是有点矫枉过正。

谢谢!

+0

像JQuery这样的库会为你执行这种编码 – Andy 2010-03-17 13:48:10

+2

@Andy:jQuery不会做任何不是本地可用的东西 - 它使用encodeURIComponent()。 – 2010-03-17 14:08:32

+0

@Andy E当然不是,但为什么在AJAX库比比皆是时重新发明轮子? – Andy 2010-03-18 10:02:48

回答

6

即使通过POST发送东西,你仍然需要正确的urlencode。如果和号字符在JSON正文中,则这将被视为参数/值对分隔符,并且您的JSON将不再有效。

escape()已弃用,所以请使用encodeURIComponent()。这不应该是矫枉过正,因为这是该功能的预期目的之一。