ajax 用不同的数据加载更多按钮
ajax load more button with different data
我在加载更多按钮上使用 ajax,但问题是每当我单击加载更多按钮时,我每次都从 content.php 获取相同的数据,其中包含一个 mysql 查询从 table 中获取数据。
如何根据 id 从 table 中获取不同的数据,最初存在十行,当我单击“加载更多”按钮时,接下来的 10 行应附加已存在的数据。
数据被追加,但它始终是相同的数据。
我还有与加载更多按钮关联的数据 ID,它是与最初存在的元素的最后一个元素关联的 ID。
var collegename=$(this).attr("value");
var contentid=$(this).attr("data-id");
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
}
});
//content.php
$collegename = isset($_POST["collegename"]) ? $_POST["collegename"] : 0;
$query= "SELECT * FROM ".$collegename." ORDER BY rand() ";
可能有很多种方法可以做到这一点。其中之一是:
您可以在主页 pass 中定义一个计数器 ajax 调用变量,与 ajax 绑定并基于它获取结果,例如:
var countAjaxHit = 0 ;
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename+'&countAjaxHit='+countAjaxHit,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
countAjaxHit = countAjaxHit + 1;
}
});
//content.php
$collegename = isset($_POST["collegename"]) ? $_POST["collegename"] : 0;
$countAjaxHit = isset($_POST["countAjaxHit"]) ? $_POST["countAjaxHit"] : 0;
if($countAjaxHit==0)
{
$countAjaxHit++;
}
else
{
$countAjaxHit=$countAjaxHit+10;
}
$query= "SELECT * FROM ".$collegename." WHERE 1=1 LIMIT ".$countAjaxHit.", 10";
尽管您可以在获取数据时将 ajax 方法从 POST 更改为 GET。
当然,使用 sql 语句你总是会得到相同的数据!
您应该做的第一件事是,尝试将数据作为对象传递....
$.ajax({
type: "post",
url: "content.php",
data: {
contentid: contentid,
collegename: collegename
},
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
}
});
你可以在 php 上轻松获取它,例如$_POST['data']['contentid']
你有不止一种选择来获得你正在寻找的内容....
一种是限制你的结果
$amount = 10;
$offset = ($_POST['data']['contentid']?$_POST['data']['contentid']*$amount:0);
$query = "SELECT * FROM ".$collegename." LIMIT {$offset}, {$amount} ";
例如,您将 0 作为 id 传递,您将获得前 10 个结果,当您传递 1 时,您将获得接下来的 10 个结果...依此类推...
就像我说的,这只是一种方法:)
正如我从你上面写的内容了解到的,我有一个非常简单的方法来做到这一点
var collegename=$(this).attr("value");
$a = $(this).attr('data-id'); //this will get the data-id
var contentid=$a; //$a assigned to variable for passing to php file
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
$a=$a-5;
$('.button').attr('data-id', $a);
}
});
仅当请求成功时,这才会为按钮的数据 ID 分配一个新值,然后获取 php 文件中的变量,并将其与 limit 或 between 一起使用,如您所要求的
我在加载更多按钮上使用 ajax,但问题是每当我单击加载更多按钮时,我每次都从 content.php 获取相同的数据,其中包含一个 mysql 查询从 table 中获取数据。
如何根据 id 从 table 中获取不同的数据,最初存在十行,当我单击“加载更多”按钮时,接下来的 10 行应附加已存在的数据。
数据被追加,但它始终是相同的数据。
我还有与加载更多按钮关联的数据 ID,它是与最初存在的元素的最后一个元素关联的 ID。
var collegename=$(this).attr("value");
var contentid=$(this).attr("data-id");
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
}
});
//content.php
$collegename = isset($_POST["collegename"]) ? $_POST["collegename"] : 0;
$query= "SELECT * FROM ".$collegename." ORDER BY rand() ";
可能有很多种方法可以做到这一点。其中之一是: 您可以在主页 pass 中定义一个计数器 ajax 调用变量,与 ajax 绑定并基于它获取结果,例如:
var countAjaxHit = 0 ;
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename+'&countAjaxHit='+countAjaxHit,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
countAjaxHit = countAjaxHit + 1;
}
});
//content.php
$collegename = isset($_POST["collegename"]) ? $_POST["collegename"] : 0;
$countAjaxHit = isset($_POST["countAjaxHit"]) ? $_POST["countAjaxHit"] : 0;
if($countAjaxHit==0)
{
$countAjaxHit++;
}
else
{
$countAjaxHit=$countAjaxHit+10;
}
$query= "SELECT * FROM ".$collegename." WHERE 1=1 LIMIT ".$countAjaxHit.", 10";
尽管您可以在获取数据时将 ajax 方法从 POST 更改为 GET。
当然,使用 sql 语句你总是会得到相同的数据!
您应该做的第一件事是,尝试将数据作为对象传递....
$.ajax({
type: "post",
url: "content.php",
data: {
contentid: contentid,
collegename: collegename
},
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
}
});
你可以在 php 上轻松获取它,例如$_POST['data']['contentid']
你有不止一种选择来获得你正在寻找的内容....
一种是限制你的结果
$amount = 10;
$offset = ($_POST['data']['contentid']?$_POST['data']['contentid']*$amount:0);
$query = "SELECT * FROM ".$collegename." LIMIT {$offset}, {$amount} ";
例如,您将 0 作为 id 传递,您将获得前 10 个结果,当您传递 1 时,您将获得接下来的 10 个结果...依此类推...
就像我说的,这只是一种方法:)
正如我从你上面写的内容了解到的,我有一个非常简单的方法来做到这一点
var collegename=$(this).attr("value");
$a = $(this).attr('data-id'); //this will get the data-id
var contentid=$a; //$a assigned to variable for passing to php file
$.ajax({
type: "post",
url: "content.php",
data: 'contentid='+contentid+'&collegename='+collegename,
dataType: "text",
success: function(response) {
var $loaderImg = $(this).parent().find(".loadingdata").hide();
$content.html(response).prepend($loaderImg);
$a=$a-5;
$('.button').attr('data-id', $a);
}
});
仅当请求成功时,这才会为按钮的数据 ID 分配一个新值,然后获取 php 文件中的变量,并将其与 limit 或 between 一起使用,如您所要求的