我正在使用Zend Framework进行项目。为什么当我发出POST请求并通过$this->_request->getParams()
获取控制器中的参数时,它显示未解码的值?例如,我的HTML表单中的一个字符串Speakers & keyboards
从PHP中的getParams()中检索为Speakers & keyboards
。为什么PHP自动html解码我的POST?
不是PHP自动解码每个发布的值?
我正在使用Zend Framework进行项目。为什么当我发出POST请求并通过$this->_request->getParams()
获取控制器中的参数时,它显示未解码的值?例如,我的HTML表单中的一个字符串Speakers & keyboards
从PHP中的getParams()中检索为Speakers & keyboards
。为什么PHP自动html解码我的POST?
不是PHP自动解码每个发布的值?
嗨,约翰,谢谢你的提示!我认为这是真正的问题,因为我正在做一个AJAX POST请求,并从页面HTML获取数据。所以我最好在发送请求之前使用urlDecode()之类的东西...你觉得呢?
那么问题是,你是发送HTML,你想要的文本。
当您从页面获取内容时,请使用文本而不是HTML。所以不要使用innerHTML
或jQuery的.html()
。获取textNode并阅读其data
属性,或使用jQuery的.text()
。
啊当然!非常好的解释大卫! – 2011-05-17 13:20:42
因为没有理由这样做。
数据被编码用于传输,然后再解码。 HTML不是用于传输的编码。
希望接收HTML的唯一原因是,如果发送了HTML,并且发送了HTML,那么(可能)HTML是期望的。转换为文本通常不会成为接下来发生的期望事情。
大卫请参阅deceze的评论。我想你可能误解了我的问题。谢谢。 – 2011-05-17 10:36:24
PHP自动解码转义的内容,而不是HTML实体中的内容。
嗨,约翰,谢谢你的提示!我认为这是真正的问题,因为我正在做一个AJAX POST请求,并从页面HTML获取数据。所以我最好在发送请求之前使用urlDecode()之类的东西...你觉得呢? – 2011-05-17 10:42:26
我想我可能会在发送ajax请求之前使用来自http://phpjs.com的html_entity_decode javascript analog。你认为什么 - 这是一个解决方法,也许有更好的方法? – 2011-05-17 10:46:18
为什么不在服务器上做呢?这迫使任何使用API的人遵守 - 服务器端验证通常比客户端更好。 否则,我认为问题出在你的AJAX库的某处。 URIEncode不应该添加任何实体编码到您的内容。 – 2011-05-17 10:49:21
您正在输入&&到一个表单中,并在服务器上接收到'&'?这很奇怪。 – deceze 2011-05-17 10:31:41
是的,这正是我收到的。这很奇怪! – 2011-05-17 10:35:28
它是一个纯文本输入?或者一个JavaScript所见即所得的编辑器?使用Firebug/Chrome调试器/ Charles /等检查浏览器实际发送的内容。 – Quentin 2011-05-17 10:37:44