我一直在研究jquery文档和关于ajax,我试图了解ajax和php请求是如何工作的。
我试图将正常的分页转换为ajax分页。
如何使用ajax currentPage=3¤tPage=1
并在服务器上使用它?
我尝试在控制台中返回的方式如下:
如果我点击数字3,例如
currentPage=8¤tPage=1
如果我点击数字8
$('.page-link').click(function (e) {
e.preventDefault();
var url = $(this).data('href');
$.ajax({
type:"get",
url: url,
data: {
currentPage: 1
},
success: function (response) {
var html = $('<h1/>', {html : response}).find('#paginacao-ajax');
$('#paginacao-ajax').html( html )
}
});
})
并且屏幕不会更改它保留在相同的内容
AJAX
public function paginglink($query,$records_per_page)
{
$stmt = $this->db->prepare($query);
$stmt->execute();
$total_no_of_records = $stmt->rowCount();
if($total_no_of_records > 0)
{
?><ul class="pagination"><?php
$total_no_of_pages=ceil($total_no_of_records/$records_per_page);
$current_page=1;
if(isset($_GET["currentPage"]))
{
$current_page=$_GET["currentPage"];
}
if($current_page!=1)
{
$previous =$current_page-1;
echo "<li class='page-item'><a href='#' class='page-link' data-href='currentPage=1'>First</a></li>";
echo "<li class='page-item'><a href='#' class='page-link' data-href='currentPage=".$previous."'>Back</a></li>";
}
for($i=1;$i<=$total_no_of_pages;$i++)
{
if($i==$current_page)
{
echo "<li class='page-item'><a href='#' class='page-link' data-href='currentPage=".$i."' style='color:red;'>".$i."</a></li>";
}
else
{
echo "<li class='page-item'><ahref='#' class='page-link' data-href='currentPage=".$i."'>".$i."</a></li>";
}
}
if($current_page!=$total_no_of_pages)
{
$next=$current_page+1;
echo "<li class='page-item'><a href='#' class='page-link' data-href='currentPage=".$next."'>Next</a></li>";
echo "<li class='page-item'><a href='#' class='page-link' data-href='currentPage=".$total_no_of_pages."'>Last</a></li>";
}
?></ul><?php
}
}
class.crud.php
%i[ ... ]
答案 0 :(得分:0)
$ _ GET变量只会为您提供被调用url上显示的内容 喜欢: - http://yourdomain.com?someParameter=SomeValue&anotherParameter=AnotherValue
将是:
Array(
someParameter => SomeValue
anotherParameter => AnotherValue
}
基本上你的错误是在你的网址和你的数据属性上声明currentPage。没有规则禁止在url上使用相同的参数两次,实际上这在某些框架中很常见。因为接缝不是你的意图所以你应该在ajax调用中从你的数据属性中删除currentPage:1。
但是对于这些知识,ajax与普通表单提交没有什么不同,除了它不需要页面重新加载这样做的事实。因此,您可以遵循常见形式(发布或获取)的正常行为以及如何获取有关PHP代码的信息。
您可以像这样制作ajax请求:
$('.page-link').click(function (e) {
e.preventDefault();
var url = $(this).data('href');
$.ajax({
method:"GET",
url: url,
success: function (response) {
var html = $('<h1/>', {html : response}).find('#paginacao-ajax');
$('#paginacao-ajax').html( html )
}
});
})
PHP,默认情况下使用 $ _ GET 或 $ _ POST 变量时,只会为您提供使用相同名称定义的最后一个参数的值。
因此,如果您定义树时间,参数A例如(A = 1&amp; A = 2&amp; A = 3),使用$ _GET [&#39; A&#39;] 访问它给你结果3.
如果您希望获得有关参数A的所有值,则必须解析自己的网址。
使用 $ _ SERVER [&#39; REQUEST_URI&#39;] ,您可以访问网址字符串,并且很容易被&#34;&amp;&#34;,而不是每个字符串爆炸一个人再次爆炸&#34; =&#34; ,而不是使用具有相同名称的参数的值创建一个数组。或任何其他解决方案,如求和,或任何更适合你的解决方案。
答案 1 :(得分:0)
在您的js代码中,将currentPage=1
替换为currentPage=$(this).attr('data-href')
请参阅此示例:
$('.page-link').click(function (e) {
e.preventDefault();
var url = $(this).attr('href');
var page = $(this).attr('data-href');
$.ajax({
type:"get",
url: url,
data: {
currentPage: page
},
success: function (response) {
var html = $('<h1/>', {html : response}).find('#paginacao-ajax');
$('#paginacao-ajax').html( html )
}
});
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class='page-item'><a href='#' class='page-link' data-href='1'>Pag 1</a></li>
<li class='page-item'><a href='#' class='page-link' data-href='2'>Pag 2</a></li>
<li class='page-item'><a href='#' class='page-link' data-href='3'>Pag 3</a></li>
<ul>
&#13;