AJAX POST和加号(+)–如何编码?

我通过AJAX将表单字段的内容发布到PHP脚本中,并使用JavaScript来转义(field\u contents)。问题是,任何加号都被去掉,代之以空格。如何安全地“编码”加号,然后在PHP端对其进行适当的“解码”

在JS和PHP中使用encodeURIComponent(),您应该会收到正确的值

注意:在PHP中访问$\u GET$\u POST$\u REQUEST时,您正在检索已解码的值

例如:

在您的JS中:

//url编码字符串
var string=encodeURIComponent(“+”);//“%2B”
//将其发送到您的服务器
window.location=http://example.com/?string=“+字符串;//http://example.com/?string=%2B

在您的服务器上:

echo$_GET['string'];//"+"

只有原始HTTP请求包含url编码的数据

对于GET请求,您可以从URI中检索它$_服务器['REQUEST\u URI']$\u服务器['QUERY\u STRING']。对于URL编码的帖子,file\u get\u contents('php://stdin)

注意:

decode()仅适用于单字节编码字符。它不适用于整个UTF-8范围

例如:

text=“\u0100”//Ā
//不正确
转义(文本);//%u0100
//正确的
编码组件(文本);//%C4%80

注意:“%C4%80”相当于:转义('\xc4\x80')

这是表示UTF-8中的Ā的字节序列(\xc4\x80)。因此,如果使用encodeURIComponent()您的服务器端必须知道它正在接收UTF-8。否则PHP将破坏编码

发表评论