我在CakePHP 2上使用了paginator。我已经将paginator从控制器发送到了视图。如果我调试paginator的next和prev方法,这就是我得到的:
debug($this->Paginator->next(null, null, array('class' => 'disabled')));
'<span class="next"><a href="/Project/Controller/method/127151/page:2" rel="next"></a></span>'
我需要在同一页面的框架上进行分页,因此当用户单击下一页或上一页时,不是所有页面都刷新,只是我用来显示数据的框架。我将使用Jquery的$ .post方法做到这一点,但是我需要在href中显示prev和next的URL,而不是所有的span和其他元素,例如 $ this-&gt; Html-&gt ; url提供。
有人知道如何从分页器的上一个和下一个方法中检索URL吗?
答案 0 :(得分:0)
我找到了一种使用PHP的DOM方法解决这个问题的方法:
$htmlNext = $this->Paginator->next(null, null, array('class' => 'disabled')); //gets paginator next HTML tag
$domNext = new DOMDocument();
$domNext->loadHTML($htmlNext);
$tagsNext = $domNext->getElementsByTagName('a');
$theLinkNext = "";
foreach ($tagsNext as $tag)
{
$theLinkNext = $tag->getAttribute('href');
}
现在在$ theLinkNext变量上你有下一页的URL,然后你只需要调用Jquery的$ .post并使用URL来获取数据:
var loadNotesPage = "<?php echo $theLinkNext ?>";
$.post(loadNotesPage, function (data) {
$('#loading-notes').html(data);
});
答案 1 :(得分:0)
$this->Paginator->url()
默认情况下会返回完整的分页URL字符串,以用于非标准上下文(即JavaScript)。您可以查看Cakephp 2.x文档here,希望对您有所帮助
答案 2 :(得分:0)
您可以尝试这种方式
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<select data-src='test.php' data-id='id' data-name='name'></select>
</body>
</html>
<html>
<script>
$('select[data-src]').each(function() {
var $select = $(this);
$select.append('<option></option>');
$.ajax({
url: $select.attr('data-src'),
data: {'v0': 'Alligator', 'v1': 'Crocodile'}
}).then(function(options) {
options.map(function(option) {
var $option = $('<option>');
$option
.val (option[$select.attr('data-id')])
.text(option[$select.attr('data-name')]);
$select.append($option);
});
});
});
</script>