cakephp1.2.x-Ajax分页';下一页';不更新,保持在2上

cakephp1.2.x-Ajax分页';下一页';不更新,保持在2上,php,cakephp,cakephp-1.2,Php,Cakephp,Cakephp 1.2,大家好 我对使用CakePHP 2.x非常满意,但目前我不得不使用更旧的CakePHP 1.2.x应用程序 我已经实现了一个Ajax分页,它在第一页上运行得非常好,但是“下一页”链接永远不会超过第2页。因此,即使加载了第2页,我的分页器的下一个链接仍然是“第2页” 区别在于我的分页器链接是全局的。我不会将分页链接作为新的DOM注入HTML的一部分加载。paginator链接位于我的ajax容器之外,内容在单击时加载到容器中。分页器链接未加载到该容器中 我很清楚CakePHP2.x使用了$this

大家好

我对使用CakePHP 2.x非常满意,但目前我不得不使用更旧的CakePHP 1.2.x应用程序

我已经实现了一个Ajax分页,它在第一页上运行得非常好,但是“下一页”链接永远不会超过第2页。因此,即使加载了第2页,我的分页器的下一个链接仍然是“第2页”

区别在于我的分页器链接是全局的。我不会将分页链接作为新的DOM注入HTML的一部分加载。paginator链接位于我的ajax容器之外,内容在单击时加载到容器中。分页器链接未加载到该容器中

我很清楚CakePHP2.x使用了
$this->Js->WriteBuffer()方法打印出核心JS,据我所知,它用于更新分页链接

据我所知,CakePHP 1.2.x没有这样的方法

有人能解释一下或提出一些意见吗

我的附带组件和帮助程序:

var $components = array('RequestHandler');
var $helpers = array('Javascript', 'Html', 'Form', 'Paginator');
我的页码:

$paginator->next('<h3>Next Page </h3>',array('escape'=>false));
$javascript->link('jquery.cookie.js',false); $javascript->link('jquery.tweet.js',false); $javascript->link('flowplayer.min.js',false); $javascript->link('jquery.validate.min.js',false); $javascript->link('coin-slider.min.js',false); $javascript->link('jquery.thslide.min.js',false); $javascript->link('jquery.barousel.min.js',false); $javascript->link('behavior.js',false); 回声“; 回声“; echo“jQuery.noConflict();”

Ajax视图文件:

$javascript->link('jquery-ui-1.8.13.custom.min.js', false);
$javascript->link('scrollads.js', false);
$javascript->link('jquery.form.js', false);
$javascript->link('jquery.form-defaults.js', false);
$javascript->link('jquery.jplayer.min.js', false);
$javascript->link('jquery.sparkline.min.js', false);
<?php foreach ($galleries as $gallery): ?>
                <div class="albumcontainer-wrapper">
                    <div class="albumcontainer-top"></div>
                        <div class="albumcontainer">
                            <a href="<?php echo Router::url('/gallery_images/index/'.$gallery['Gallery']['id']); ?>">
                                <?php echo $html->image($gallery['GalleryImage'][0]['Image']['default']['path_adjusted']); ?>
                            </a>
                            <h3><?php echo $gallery['Gallery']['title']; ?></h3>
                        </div>
                    <div class="albumcontainer-bottom"></div>
                </div>
            <?php endforeach; ?>
            <?php echo $javascript->WriteEvents(true); ?>
$paginator->options(
                    array(
                        'update' => 'ajaxAppendGalleries', 
                        'indicator' => false,
                        'evalScripts' => true,
                        'complete' => 'var tmp = jQuery("#ajaxAppendGalleries").html(); jQuery("#galleryContainer").append(tmp); tmp = null; jQuery("#ajaxAppendGalleries").empty();',
                        )
                    ); 

这将是伪的,因为我不熟悉cake 1.2
虽然我认为其中一些是琐碎的,但这些都是应该“勾选”的要点

在控制器的功能中:
确保发送的json内容布局为空且没有调试信息

在视图中,创建类似以下内容的json结构:

data{
  paginationHtml: {htmlContent: /* here comes the output of the navigation-creation-function of the  paginator-helper*/, 
  anyOtherContent: ""},
  pageContentHtml: /* the iteration that print out the paged content itself */
}

在原始页面中,使用jquery加载内容并替换分页数据的
innerHTML
,以及分页导航链接的内容。

Simon,请怀疑发生的情况是当document.ready()时,您的单击事件被绑定到原始DOM对象,因此,当发生Ajax调用并替换分页内容时,事件不会附加到替换的DOM对象

我知道在jQuery中可以使用

$(document).on('event','#target',function(){})

为了确保事件永久绑定到页面上的所有对象,而不管它们何时/如何加载,我确实在今天的(滚动到Js::event)中看到了一个建议您使用它的示例。。。请注意,尽管当前版本的jQuery中不推荐使用.bind()方法,但请改用.on()。恐怕我不知道这在1.2版中是否可行,但是如果必须的话,您可以通过一些手动jQuery来增加对这个JS助手的使用

你能添加html/js结构吗?当然,你指的是Ajax加载视图的html结构,以及主布局头部的js结构吗?是的。有没有可能js事件在第一次加载后变得无关紧要?我不这么认为,因为指令是不变的:当单击下一个链接时,ajax将分页结果加载到X容器中。现在更新我的问题。感谢您到目前为止的输入,非常感谢您的加入。我的加载更多ajax按钮只是下一个分页器选项:
echo$paginator->next('load more',array('escape'=>false))好的,我明白你的意思,但是如果我使用你的方法,那么我可能根本不使用分页助手,我也可能只使用Ajax助手,并将我自己的分页写入页面?一点也不。恰恰相反。您将在正确的上下文中使用paginator-意思是:在当前页面调用的上下文中\Load我真的一点也不了解这将如何实现?我无法在ajax加载的页面上实现分页,因为这将删除我对全局分页的要求。我认为我们的理解水平不一样。请检查以下内容:。注意:这里有一个ajax分页小节。这将更好地解释它:)嗨,Yossi,我在stackoverflow上发布之前仔细检查了蛋糕册;)我想你不明白我的问题吧?ajax加载确实有效,并且我的内容加载正确,我唯一的问题是分页不更新,即使我添加$javascript->WriteEvents(true);我的ajax布局和ajax视图的代码。。。我开始认为,也许应用程序中使用了所有jQuery插件,可能存在冲突,导致prototype无法更新页码以包含正确的“下一页”链接。嘿,谢谢你的回复。由于1.2.x使用prototype作为它的JS框架,我认为这是不可能的,但是确实有人可以扩展现有的JS助手或分页器,但我真的希望实现一个简单的默认分页修复程序。现在,我认为使用jQueries$.Ajax方法实现自己的Ajax负载会容易得多,并且只使用cake paginator跟踪当前页面、总页面等,使用这些值控制自定义分页。叹息。。。我多么希望这是一个蛋糕2.x项目而不是好的,你是对的,我忘记了原型。如果有帮助的话,我以前也做过。我有一段代码我可以发布,如果SE允许我。。。有几个字符太长。
$(“#tableContainer”)。查找('th>a,ul.pagination a')。单击(函数(e){//ajax call})
这会处理第列标题和分页(假设您设置了选择器)。我的工作涉及到在表顶部搜索的ajax帖子,以设置分页条件。您好。我听到您在自定义ajax上说是的,这就是我开始实现ajax的原因
data{
  paginationHtml: {htmlContent: /* here comes the output of the navigation-creation-function of the  paginator-helper*/, 
  anyOtherContent: ""},
  pageContentHtml: /* the iteration that print out the paged content itself */
}
$(document).on('event','#target',function(){})