2

我正在为我的 Web 应用程序使用 cakephp ajax 分页。

在这个应用程序中,我也实现了搜索过滤器。当用户过滤记录时,我使用 GET 方法提交搜索表单,在控制器中我获取过滤器变量并将它们附加到分页器助手中,如下所示。

$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;从查询字符串中删除此额外内容。

任何人都可以帮助如何应对这种情况。

4

2 回答 2

2

The & should be converted to &amp;. Having a & by itself in HTML code is incorrect.

This is what the link should look like in the HTML source:

<a href="/sites/tutor/users/ajaxtutor/page:2?gender%5B0%5D=1&amp;gender%5B1%5D=2" id="link-1795722171">2 </a>

So, if you have problems receiving the data, it's not because of the &amp; in the code.

请注意,查询字符串中的键是gender[0]and gender[1]。HTML 协议在查询字符串中没有数组的概念,因此这是传递给服务器的确切名称,但是 PHP 将解析这些值并从中创建一个数组。

于 2012-11-24T07:01:12.823 回答
0

正如 guffa 所说,从& to的转换是正确的,&amp;因为它是 html 标准。

问题是 cakephp 选择了分页链接的 href 部分,其中包含&amp;代替&并将其放入 ajax url 部分。请参见下面的示例:

  • 分页链接:
  • <a href='somedomain.com?&amp;a=1&amp;b=2>1</a>
  • 生成的ajax代码:
  • $("#link-1478709635").bind("click", function (event) {
        $.ajax({
            url: "somedomain.com?&amp;a=1&amp;b=2"
        });
        return false;
    
  • 当我们点击链接时,它将&amp;取代&它。

  • 作为一种解决方案,我使用 Post 方法代替 GET 方法,在分页器选项中使用分页链接将我的数据发回,如下所示: 'data'=>http_build_query($this->request->data),

于 2012-11-30T05:29:44.360 回答