[英]How do I calculate the last iteration of a PHP while loop with jQuery/JavaScript?
在 PHP 我有一個頁面檢查是否有超過 0 行,如果沒有,那么用戶會收到一條消息,說echo 'NO MATCHES';
,然后檢查用戶$_POST
是否編輯了任何過濾器以顯示適合所述過濾參數的所有數據,如果沒有則顯示所有迭代。 這是我的偽代碼:
PHP.php
$rowcount = mysqli_num_rows($result); //Count iterations
if($rowcount > 0){
if(isset($_POST["filter1"]) && isset($_POST["filter2"]) && isset($_POST["filter3"])) {
//If there are filters selected
while($row = mysqli_fetch_array($result)) {
include('Listing.php');
}
} else {
//If no filters have been selected
while($row = mysqli_fetch_array($result)) {
include('Listing.php');
}
}
} else {
echo '<div class="NoMatch">NO MATCHES</div>';
}
然后在我的 jQuery 中,我有一個 AJAX 調用,當帶有#Loader
的圖像在inView(第三方功能)時,它會抓取我的過濾器作為數據,指向PHP頁面內部的數據(容器.bove) 這是偽代碼:
jQuery.js
$('#Loader').on('inview', function(event, isInView) {
if (isInView) {
// Filters
var filter1 = get_filter('filter1');
var filter2 = get_filter('filter2');
var filter3 = get_filter('filter3');
$.ajax({
url: 'PHP.php',
type: 'POST',
data: {
filter1: filter1,
filter2: filter3,
filter3: filter3
},
success:
function(data) {
if(data != '') {
$('#StoneContainer').append(data);
$('#pageno').val(nextPage);
} else {
$('#StoneContainer').html(data);
$('#Loader').hide(); // Hide infinite scroll
}
}
});
}
});
在我的 jQuery.AJAX 的if
語句中,當data
為空但它永遠不會為空時,我試圖隱藏圖像( #Loader
),因為我的 PHP echo 'NO MATCHES';
. 當沒有更多的 PHP 迭代時,如何使用 jQuery 計算 PHP 的 while 循環的最后一個索引以隱藏圖像?
嘗試:
if(data.lastIndexOf('class="Iteration"') == 0) {
$('#Container').append(data);
$('#pageno').val(nextPage);
} else {
$('#Container').html(data);
$('#Loader').hide(); // Hide infinite scroll
}
不起作用,因為它會找到該頁面的最后一個 class 但不是整個數組,並且if(data.indexOf('class="Iteration"') > 0) {
不起作用,因為它僅在 PHP $rowcount < 0
時隱藏$rowcount < 0
但不是在數組完成時。
$('#Container').append(data);
$('#pageno').val(nextPage);
$('.Iteration').each(function(element) {
if (element + 1 === count) {
$('#Loader').hide(); // Hide infinite scroll
}
});
我也想不通為什么沒有工作。
抱歉-我還不能發表評論,但我認為這是一個合理的答案-
為什么不簡單地更改您的 if() 條件,以排除任何“不匹配”條件文本的樣子。
您的評論似乎表明“不匹配”文本如下所示:
<div class="NoMatch">NO MATCHES</div>
假設字符串 'NoMatch' 保證僅在沒有匹配項時出現,並且在有 1 個或多個匹配項時永遠不會出現。
然后你可以使用這個:
if(data !== '' && !data.includes('NoMatch')) {
$('#StoneContainer').append(data);
$('#pageno').val(nextPage);
} else {
$('#StoneContainer').html(data);
$('#Loader').hide(); // Hide infinite scroll
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.