AJAX загрузить больше кнопки с разными данными

Я использую 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() ";

5

Решение

Там может быть много возможных способов сделать это. один из них является:
Вы можете определить переменную вызова 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 при получении данных.

2

Другие решения

Конечно, вы всегда получите те же данные с этим оператором 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 результатов … и так далее …

как я уже сказал, это только один способ сделать это 🙂

1

Как я понял из того, что вы написали выше, у меня есть очень простой способ сделать это

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 и будет использовать ее с ограничением или между ними, как вам требуется

1
По вопросам рекламы [email protected]