jal*_*rin 91 javascript ajax post encode decode
我正在通过AJAX将表单字段的内容发布到PHP脚本并使用JavaScript escape(field_contents).问题是任何加号都被剥离并被空格所取代.如何安全地'编码'加号然后在PHP端适当地"解码"它?
buc*_*bay 140
encodeURIComponent()在JS和PHP中使用时,您应该收到正确的值.
注意:当您访问$_GET,$_POST或$_REQUEST在PHP中,要检索已经被解码值.
例:
在你的JS中:
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
Run Code Online (Sandbox Code Playgroud)
在您的服务器上:
echo $_GET['string']; // "+"
Run Code Online (Sandbox Code Playgroud)
它只是包含url编码数据的原始HTTP请求.
对于GET请求,您可以从URI. $_SERVER['REQUEST_URI']或中检索此请求$_SERVER['QUERY_STRING'].对于urlencoded POST,file_get_contents('php://stdin')
注意:
decode()仅适用于单字节编码字符.它不适用于完整的UTF-8系列.
例如:
text = "\u0100"; // ?
// incorrect
escape(text); // %u0100
// correct
encodeURIComponent(text); // "%C4%80"
Run Code Online (Sandbox Code Playgroud)
注意:"%C4%80"相当于:escape('\xc4\x80')
哪个是以UTF-8 \xc4\x80表示的字节序列()?.因此,如果您使用encodeURIComponent()您的服务器端必须知道它正在接收UTF-8.否则PHP将破坏编码.
Den*_*ovs 18
在JavaScript中尝试:
encodeURIComponent()
Run Code Online (Sandbox Code Playgroud)
在PHP中:
urldecode($_POST['field']);
Run Code Online (Sandbox Code Playgroud)
您要查找的十六进制值是 %2B
要在 PHP 中自动获取它,请通过urlencode($stringVal). 然后运行它urldecode($stringVal)以将其恢复。
如果您希望 JavaScript 处理它,请使用 escape( str )
编辑
在@bobince 发表评论后,我做了更多阅读,他是对的。使用encodeURIComponent(str)和decodeURIComponent(str)。Escape 不会转换字符,只用\'s转义它们
| 归档时间: |
|
| 查看次数: |
117721 次 |
| 最近记录: |