簡體   English   中英

如何使用 jQuery/JavaScript 計算 PHP while 循環的最后一次迭代?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM