Я использую ajax для кнопки «загрузить больше», но проблема заключается в том, что всякий раз, когда я нажимаю кнопку «загрузить больше», я каждый раз получаю одни и те же данные из файла content.php, который содержит запрос mysql для получения данных из таблицы.
Как я могу получить разные данные в зависимости от идентификатора из этой таблицы, которая изначально содержит десять строк, и когда я нажимаю кнопку «загрузить больше», следующие 10 строк должны быть добавлены с уже существующими данными.
Данные добавляются, но все время это одни и те же данные.
У меня также есть идентификатор данных, связанный с кнопкой «загрузить больше», который является идентификатором, связанным с последним элементом изначально присутствующего элемента.
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() ";
Там может быть много возможных способов сделать это. один из них является:
Вы можете определить переменную вызова 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 на GET из POST при получении данных.
Конечно, вы всегда получите те же данные с этим оператором 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 в качестве идентификатора, вы получите первые 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);
}
});
это присвоит новое значение идентификатору данных кнопки, только если запрос выполнен успешно, а затем получит переменную в файле php и будет использовать ее с ограничением или между ними, как вам требуется