我使用自己的 AJAX 代码发送数据,它工作,AJAX 发送 & PHP 代码获取一个变量,但是:
当我尝试发送链接(例如:http ://abc.com/abc++ )或类似文件夹名称的 var时,+
它会返回不带+
.
AJAX 发送数据&data='+encodeURIComponent(data)+'
和 PHP 获取urldecode($data);
+
我的问题是如何在不从字符串中删除字符的情况下从 POST 数据中获取 PHP 变量。
我使用自己的 AJAX 代码发送数据,它工作,AJAX 发送 & PHP 代码获取一个变量,但是:
当我尝试发送链接(例如:http ://abc.com/abc++ )或类似文件夹名称的 var时,+
它会返回不带+
.
AJAX 发送数据&data='+encodeURIComponent(data)+'
和 PHP 获取urldecode($data);
+
我的问题是如何在不从字符串中删除字符的情况下从 POST 数据中获取 PHP 变量。
rawurldecode()
在 PHP 中使用。rawurldecode()
不会将加号 (+) 解码为空格urldecode()
。
这样,无论您的 JavaScript 将加号字符作为文字字符串+
还是作为编码字符串发送%2B
,PHP 都会将其解码为加号字符。
+
在 URL 中使用时是特殊含义字符并替换空格 ( )。如果你想传递
+
文字,你也必须对其进行编码(to %2b
)。通常,您应该始终传递用于构建 URL 的任何内容urlencode()
以避免出现问题。
看看它是怎么回事:
echo urlencode(' + '); // spaces around `+`
给
+%2B+