AJAX POST とプラス記号 (+) -- それをエンコードする方法は?
P粉116654495
P粉116654495 2023-07-17 18:42:16
0
1
433

フォームフィールドの内容をAJAX経由でPHPスクリプトにPOSTし、JavaScriptのescape(field_contents)を使用してエスケープしています。問題は、プラス記号が削除され、スペースに置き換えられることです。プラス記号を安全に「エンコード」し、PHP 側で適切に「デコード」するにはどうすればよいですか?

P粉116654495
P粉116654495

全員に返信(1)
P粉087951442

在JS中使用encodeURIComponent(),在PHP中你应该能够正确接收到值。

注意:当你在PHP中访问$_GET、$_POST或$_REQUEST时,你获取到的是已经解码过的值。

例子

在你的JS中:

// 对字符串进行URL编码
var string = encodeURIComponent('+'); // "%2B"
// 发送到服务器
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B

在你的服务器端:

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

只有原始的HTTP请求包含了URL编码的数据。

对于GET请求,你可以从URI中获取。$_SERVER['REQUEST_URI']或$_SERVER['QUERY_STRING']。对于URL编码的POST请求,可以使用file_get_contents('php://stdin')。

注意:

decode()只适用于单字节编码字符。对于完整的UTF-8范围,它将无效。

例如:

text = "\u0100"; // Ā
// 错误的方式
escape(text); // %u0100 
// 正确的方式
encodeURIComponent(text); // "%C4%80"

注意:"%C4%80"等同于:escape('\xc4\x80')

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

在JavaScript中尝试:

encodeURIComponent()

在PHP中使用:

urldecode($_POST['field']);
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート