1

阅读底部编辑以获取解决方法。

我无法在我的 cakephp 应用程序中实现 ajax 分页。我一直在寻找资源和教程来帮助解决这个问题,但大多数处理的是 cake 1.3。我为自己犯了一个明显而简单的错误而祈祷...

到目前为止我所处位置的描述:我为我的应用程序构建了一个简单的搜索界面 - 一个二手车搜索界面,用于搜索我数据库中的汽车。搜索界面实际上似乎工作正常。我有一个隐藏表单,它根据用户在搜索表单中的输入创建或销毁隐藏元素。这个隐藏表单是通过 Ajax 成功提交的,我可以返回一组分页结果,例如“找到 16 个显示的 1-5”。

我似乎遇到的问题是由分页器助手生成的 javascript 增强号、下一个和上一个链接/ajax 请求。

我的 CarsController 有 find_cars 函数,它需要一个 get 请求(我的控制器中的 $paginate var 和视图中的 $this->Paginator 选项都有 dataType = querystring)。该函数在初始表单提交上运行良好,带有 Get 请求 URL,例如:http://localhost/myapp/cars/findCars?price=any&year=any&miles=any

我的 ajax.ctp 布局中有 $this->Js->writeBuffer(); 在 ajax 响应中,我可以看到为 next、number 和 prev 链接编写的 jquery 事件。一个事件的示例:

$("#link-1448104972").bind("click", function (event) {$.ajax({
dataType:"html", evalScripts:true, paramType:"querystring", 
success:function (data, textStatus) {
$("#results").html(data);}, url:"\/myapp\/cars\/findCars?price=any&year=any&miles=any&page=2"});

我遇到的问题是 URL 值。当我将 url 粘贴到浏览器中时,我的 find_cars 函数会正确处理参数,因为&'s get 以纯 & 形式发送到控制器。但是,当我单击发送 ajax 请求的分页链接之一时,URL 仍然包含 & 编码的 & 和 $this->request->query; 在分页点击后的 var_dump 中看起来像:

array
  'price' => string 'any' (length=3)
  'amp;year' => string 'any' (length=3)
  'amp;miles' => string 'any' (length=3)
  'amp;body' => 
    array
      0 => string '1' (length=1)
      1 => string '2' (length=1)
      2 => string '6' (length=1)
  'amp;page' => string '2' (length=1)

我能在任何地方找到似乎提到同样问题的唯一其他讨论是在这个 cakephp lighthouse bug ticket #127中。然而,讨论是针对 cakephp 1.3 的,它链接到的 github 提交是 404。

编辑:我想我还应该补充一点,我正在尝试使用 GET 请求,以便我可以更轻松地实现预期的用户导航和书签功能,以保存搜索查询并使用浏览器和应用程序在结果中向前和向后导航分页链接。

编辑(解决方法/解决方案)- 根据@islandmyth 的建议,我从执行 Get 请求切换到执行 Post,将 paramType 从“querystring”更改为“named”。我将查询信息从 $this->request->named 传递到视图,并将信息保存到 $this->Paginator->options['data'] ,并使用 php 的 http_build_query() 函数来保留嵌套数组。

4

1 回答 1

1

Cake php Ajax Paginator 似乎无法正常工作。我也有类似的问题。

我会推荐你​​使用 cakephp 插件Cakephp-DataTable

这个插件已经实现了分页,默认情况下它具有大部分功能。他们还提供了文档,如果您在实施中发现任何困难,请查看问题部分

此外,开发人员反应迅速,如果您有任何插件,可以得到澄清。

于 2012-04-24T17:20:00.570 回答