AJAX POST 和加号 ( + ) -- 如何编码?
2022-08-30 05:39:10
我正在通过AJAX将表单字段的内容POS到PHP脚本,并使用JavaScript来.问题在于,任何加号都被去掉了,取而代之的是空格。我如何安全地“编码”加号,然后在PHP端适当地“解码”它?escape(field_contents)
我正在通过AJAX将表单字段的内容POS到PHP脚本,并使用JavaScript来.问题在于,任何加号都被去掉了,取而代之的是空格。我如何安全地“编码”加号,然后在PHP端适当地“解码”它?escape(field_contents)
在JS和PHP中使用,您应该收到正确的值。encodeURIComponent()
注意:当您访问 时或在 PHP 中,您正在检索已解码的值。$_GET
$_POST
$_REQUEST
例:
在您的 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
在服务器上:
echo $_GET['string']; // "+"
只有原始 HTTP 请求包含 url 编码的数据。
对于 GET 请求,您可以从 或 中检索此请求。对于 urlencoded POST,URI. $_SERVER['REQUEST_URI']
$_SERVER['QUERY_STRING']
file_get_contents('php://stdin')
铌:
decode()
仅适用于单字节编码字符。它不适用于完整的 UTF-8 范围。
例如:
text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100
// correct
encodeURIComponent(text); // "%C4%80"
注意:等效于:"%C4%80"
escape('\xc4\x80')
这是以 UTF-8 表示的字节序列 ()。因此,如果您使用服务器端,则必须知道它正在接收UTF-8。否则,PHP 将破坏编码。\xc4\x80
Ā
encodeURIComponent()
在 JavaScript 中,请尝试:
encodeURIComponent()
和 PHP:
urldecode($_POST['field']);