Отображение правого бокового меню с помощью ajax

Есть ajax код. По нажатию на пункте меню Ноутбуки и компьютеры -> Моноблоки должно отображаться правое боковое меню ($('.rightmenu').html(data.msg);), но в действительности ничего не происходит.

                    success: function (data) {
                    console.log('check');
                    console.log(data);
                    $('.rightmenu').html(data.msg);
                    $('.centerarea').html('<div id=\"topcenterarea\">'+'<h1>'+data.header+'</h1>'+data.countrecords+'товара'+'</div>'); 

                    // expandCollapsedFunction();
            }

Сравни https://i.stack.imgur.com/oOBjn.png и https://i.stack.imgur.com/xTYjK.png. Далее приведен javascript код со страницы testsite.html, содержащий ajax запрос.

<script>
    $(document).ready(function() {
        console.log('check');
        let subcategoryflag='';
        console.log(subcategoryflag);
            $('.submenu__item a').on('click', function (event) {
                event.preventDefault();
                console.log('Inner check');             
                subcategoryflag=event.target.innerHTML;
                $.ajax ({
                    method: 'POST',
                    url: 'ajaxsubcategory1.php',
                    cache: false,
                    data: {subcategoryflag: subcategoryflag},
                    dataType: 'json',
                    complete: function(data) {
                        console.log(data.header);
                        console.log(data.countrecords);
                    },
                    success: function (data) {
                        console.log('check');
                        console.log(data);
                        $('.rightmenu').html(data.msg);
                        $('.centerarea').html('<div id=\"topcenterarea\">' +'<h1>'+data.header+'</h1>'+data.countrecords+'товара'+'</div>'); 

                        /*expandCollapsedFunction();*/
                        
                }
            

            }
            );
        }
        );      
        
        let categoryflag='';
            $('.submenu__title a').on('click', function (event) {
                event.preventDefault();
                console.log('Inner check');             
                categoryflag=event.target.innerHTML;
                subcategoryflag=categoryflag;
                console.log(categoryflag);
                $.ajax ({
                    method: 'POST',
                    url: 'ajaxsubcategory1.php',
                    cache: false,                   
                    data: {categoryflag: categoryflag, subcategoryflag: subcategoryflag},
                    dataType: 'json',
                    complete: function(data) {
                        console.log(data.header);
                        console.log(data.countrecords);
                    },
                    success: function (data) {
                        console.log('check');
                        console.log(data);
                        $('.rightmenu').html(data.msg);
                        $('.centerarea').html('<div id=\"topcenterarea\">'+'<h1>'+data.header+'</h1>'+data.countrecords+'товара'+'</div>'); 

                        /*expandCollapsedFunction();*/
                }
            }
            );
        }
        );
    }
    )
</script>

В результате значения переменных data.header и data.countrecords - undefined (отладочные переменные)

введите сюда описание изображения

несмотря на код, приведенный ниже (ajaxsubcategory1.php) ($return['header']='Моноблоки'; $return['countrecords']=0;)

    <?php
class ajaxValidate {

    function formValidate() {
        //Put form elements into post variables (this is where you would sanitize your data)
        $categoryflag=$_POST['categoryflag'];
        $subcategoryflag = $_POST['subcategoryflag'];

        //Establish values that will be returned via ajax
        $return = array();
        $return['msg'] = '';
        $return['error'] = false;
        $return['querycontent']='';
        $return['header']='Моноблоки';
        $return['countrecords']=0;
        
        require_once('config.php');
        $pdo = new PDO($dsn, $user, $password);

        //Begin form validation functionality
        if (!isset($subcategoryflag) || empty($subcategoryflag)){
            $return['error'] = true;
            $return['msg'] .= '<li>Error: Field1 is empty.</li>';
        }
        
        //Begin form success functionality
        if ((!$return['error']) && $subcategoryflag=='Моноблоки'){
            $return['msg'] = '          <div><div class="FilterContainer"><div class="FilterSeoGroup FilterSeoGroup__seo" id="popularCollections"><h4 class="FilterSeoGroup__header">Популярные подборки</h4><div class="FilterSeoGroup__group_closed"><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--nedorogie-monobloki/">Недорогие</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--dlya-doma-m/">Для дома</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--dlya-ofisa-m/">Для офиса</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--win/">с Windows</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--imac/">Apple iMac</a></div></div><div class="FilterSeoGroup__toggle-container"><button class="FilterSeoGroup__toggle-button buttonStyleDecorator buttonStyleDecorator_theme_ghostOrange buttonStyleDecorator_size_s Button" name="" type="submit" value="" tabindex="0" borderstyle="none"><span class="buttonStyleDecorator__text ">Показать все</span></button></div></div></div></div>'
            $sql='SELECT * FROM monoblocks';
            $query=$pdo->prepare($sql);
            $result=$query->execute();
            while ($example=$result->fetch(PDO::FETCH_ASSOC))
            {
                $return['querycontent']='<div style="width: 100%; border: 2px solid red"></div>';
            };                  
            /*$return['countrecords']='SELECT COUNT(*) FROM monoblocks';*/
        }

        //Return json encoded results
        return json_encode($return);
    }

}

$ajaxValidate = new ajaxValidate;
echo $ajaxValidate->formValidate();
?>

На клиентской стороне, когда производится щелчок мыши на пункте левого бокового меню (смотри выше на javascript код с testsite.html)

    $('.submenu__title a').on('click', function (event) {}

должно отображаться правое боковое меню

                    success: function (data) {
                    console.log('check');
                    console.log(data);
                    $('.rightmenu').html(data.msg);
                    $('.centerarea').html('<div id=\"topcenterarea\">'+'<h1>'+data.header+'</h1>'+data.countrecords+'товара'+'</div>'); 

                    // expandCollapsedFunction();
            }

но оно не появляется. Должно отображаться как на

введите сюда описание изображения

а на деле отображается как на скриншоте выше. На серверной стороне написан код по щелчку на пункте меню Моноблоки

    if ((!$return['error']) && $subcategoryflag=='Моноблоки'){...}

А в скобках, возвращаемому значению присваивается строка - html разметка правого бокового меню

                $return['msg'] = '          <div><div class="FilterContainer"><div class="FilterSeoGroup FilterSeoGroup__seo" id="popularCollections"><h4 class="FilterSeoGroup__header">Популярные подборки</h4><div class="FilterSeoGroup__group_closed"><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--nedorogie-monobloki/">Недорогие</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--dlya-doma-m/">Для дома</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--dlya-ofisa-m/">Для офиса</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--win/">с Windows</a></div><div class="FilterSeoGroup__item-wrapper"><a class="FilterSeoGroup__item" href="https://www.citilink.ru/catalog/monobloki--imac/">Apple iMac</a></div></div><div class="FilterSeoGroup__toggle-container"><button class="FilterSeoGroup__toggle-button buttonStyleDecorator buttonStyleDecorator_theme_ghostOrange buttonStyleDecorator_size_s Button" name="" type="submit" value="" tabindex="0" borderstyle="none"><span class="buttonStyleDecorator__text ">Показать все</span></button></div></div></div></div>'

которое передается клиенту в виде переменной data.msg. Ссылка на неполный код в jsfiddle - https://jsfiddle.net/vladdvin/k9v6y0cw/2/ (полный код - https://disk.yandex.ru/d/VpPvrgMVE6R4Fw). Подскажите как добиться отображения правого бокового меню с помощью ajax.


Ответы (0 шт):