这是我的javascript jquery ajax函数发送数据。在这里,我用url附加我的数据,将其发送到服务器。
url = "/login/auth/";
$.ajax({
dataType: "json",
url: url+encodeURIComponent("a+b+2"),
success: function (data, textStatus, jqXHR) {
if (data.login === false)
{
alert("Invalid Password");
} else {
$('.login').hide();
$("body").append(data.html);
}
}
});
在PHP中
if (isset($_GET['r']))
{
echo 'r='.$_GET['r'];
return explode('/',rtrim($_GET['r'], '/'));
}
PHP将其解码为login / auth / a b 2
答案 0 :(得分:1)
这是因为网址中的+
符号表示空格。它基本上是%20
的更短(且更易阅读)的版本。
发送+
编码,就像使用任何其他特殊字符一样。编码+
为%2B
。但实际上,encodeURIComponent应该已经这样做了。您是否可以在PHP中解码该网址两次?
答案 1 :(得分:0)
将apache重写规则标志更改为[NE,B,L,QSA]解决了这个问题。 这里设置B(Back Reference)标志以避免解码url组件。