我发送的网址中包含特殊字符。
/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+
您看到advanceSearchValue
的变量值为A1A+
但是当我在控制器中检索到这个
$this->params()->fromQuery("advanceSearchValue");
它显示A1A
。它增加了空间,而不是+
这是我的路线配置。
"contacts" => [
"type" => "segment",
"options" => [
"route" => "/contacts[/:action[/:id]]",
"defaults" => [
"controller" => Controller\ContactController::class,
"action" => "index",
],
],
],
答案 0 :(得分:1)
这是因为+
在URL中具有特殊含义,而Zend知道这一点,并正确地将其替换为空格。
要将+
字符放入已解析的数据中,您需要对其进行URL转义。这给出了值%2B
。
因此您的完整网址应为
/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A%2B
顺便问一下,产生此URL的方式是什么,Web浏览器在将+字符发送到Web服务器之前应该自动将其转换?
答案 1 :(得分:0)
您需要对您的request-url进行编码: 您可以使用php或Javascript对其进行编码-
在javascript中:
var url= "/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+";
url= encodeURI(uri);
在php中:
$url = urlencode('/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+');
然后在您的ajax中使用此编码的网址。