Как рассчитать последнюю итерацию a PHP при l oop с помощью jQuery / JavaScript? - PullRequest
0 голосов
/ 07 апреля 2020

В 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 (выше) и добавляет данные в контейнер. Вот этот псевдокод:

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
                        }

                    }

            });

        }

    });

В выражении if моего jQuery. AJAX i ' я пытаюсь скрыть изображение (#Loader), когда data пусто, но никогда не пусто из-за моих PHP echo 'NO MATCHES';. Как рассчитать последний индекс PHP, в то время как l oop с jQuery, чтобы скрыть изображение, когда больше нет PHP итераций?

ATTEMPTS :

if(data.lastIndexOf('class="Iteration"') == 0) {
    $('#Container').append(data);
    $('#pageno').val(nextPage);
} else {
    $('#Container').html(data); 
    $('#Loader').hide();   // Hide infinite scroll
}

Не работает, потому что он найдет последний класс этой страницы, но не весь массив, а if(data.indexOf('class="Iteration"') > 0) { не работает, потому что он скрывается только когда PHP $rowcount < 0, но не, когда массив закончен.

$('#Container').append(data);
$('#pageno').val(nextPage);

$('.Iteration').each(function(element) {
    if (element + 1 === count) {
        $('#Loader').hide();   // Hide infinite scroll
    } 
});

Я не могу понять, почему не работает либо.

1 Ответ

0 голосов
/ 07 апреля 2020

Извините - я пока не могу комментировать, но я думаю, что это разумный ответ -

Почему бы просто не изменить условие if (), чтобы исключить то, на что похож текст условия 'no match'.

Ваши комментарии, похоже, указывают на то, что текст «нет совпадения» выглядит следующим образом:

<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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...