我正在为我的网络应用程序使用cakephp ajax分页。
在这个应用程序中,我也实现了搜索过滤器。当用户过滤记录时,我使用GET方法提交搜索表单,在控制器中我获取过滤器变量并将它们附加到paginator helper,如下所示。
$this->paginator->options(array(
'url' => array_merge($this->passedArgs, array('?'=> $query_string)),
'update' => '#tlist',
'evalScripts' => true)
);
我的问题是,在我的分页链接中我的所有&被转换成&请参阅下文并查看粗体部分。
<a href="/sites/tutor/users/ajaxtutor/page:2?gender%5B0%5D=1
&安培; gender%5B1%5D=2" id="link-1795722171" />;
当我点击链接时,我会得到查询字符串,如下所示:
[gender] => Array
(
[0] => 1
)
[amp;gender] => Array
(
[1] => 2
)
如何从查询字符串中删除这个额外的amp;
。
任何人都可以帮助解决这种情况。
答案 0 :(得分:2)
<{1}} 应转换为&
。在HTML代码中单独使用&
是不正确的。
这就是HTML源代码中的链接:
&
因此,如果您在接收数据时遇到问题,那不是因为代码中的<a href="/sites/tutor/users/ajaxtutor/page:2?gender%5B0%5D=1&gender%5B1%5D=2" id="link-1795722171">2 </a>
。
请注意,查询字符串中的键是&
和gender[0]
。 HTML协议在查询字符串中没有数组的概念,因此这是传递给服务器的确切名称,然而PHP将解析这些值并从中创建数组。
答案 1 :(得分:0)
正如guffa所说,从&
到&
的转换是正确的,因为它是html标准。
问题在于,cakephp挑选了分页链接的href部分,其中包含&
代替&
并将其放入ajax url部分。见下面的例子:
<a href='somedomain.com?&a=1&b=2>1</a>
$("#link-1478709635").bind("click", function (event) {
$.ajax({
url: "somedomain.com?&a=1&b=2"
});
return false;
当我们点击该链接时,我会用&
代替&
。
作为一个解决方案,我使用Post方法代替GET方法,在paginator选项中使用分页链接发回我的数据,如下所示:
'data'=>http_build_query($this->request->data),