Wordpress NEXTGEN GALLERY插件短代码无法通过Ajax调用

I'm using NEXTGEN GALLERY to display gallery in my album page. Its working fine. But then I applied Ajax logic to set load more button and tried to load another albums using that logic.

But my issue is that this plugin shortcode is not working in Ajax call and rendered as HTML text in the div.

Below is my code.

1) Template file:

//This code works fine while page load first time
<div id="ajax-posts" class="row">
   <?php 
        echo do_shortcode('[ngg_images gallery_ids=1 display_type=photocrati-nextgen_basic_thumbnails disable_pagination=1 images_per_page=1 show_all_in_lightbox=1 show_slideshow_link=0]');
   ?>
</div>
<button class="btn" id="more_posts">Load More</button>

2) JS file(gallery_load_more.js):

$(document).ready(function(){
    var ppp = 6; // Post per page
    var pageNumber = 0;

    function load_posts(){
        pageNumber++;
        var str = '&pageNumber=' + pageNumber + '&ppp=' + ppp + '&action=more_post_ajax';
        $.ajax({
            type: "POST",
            dataType: "html",
            url: ajax_posts.ajaxurl,
            data: str,
            success: function(data){
                var $data = $(data);
                if($data.length){
                    $("#ajax-posts").append($data);
                    $("#more_posts").attr("disabled",false);
                } else{
                    $("#more_posts").attr("disabled",true);
                }
            },
            error : function(jqXHR, textStatus, errorThrown) {
                $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown);
            }

        });
        return false;
    }

    $("#more_posts").on("click",function(){ // When btn is pressed.
        $("#more_posts").attr("disabled",true); // Disable the button, temp.
        load_posts();
    });
});

3) function.php file:

wp_register_script( 'gallery_load_more', get_template_directory_uri(). '/js/gallery_load_more.js', array( 'jquery'), '', true );
wp_localize_script( 'gallery_load_more', 'ajax_posts', array( 
    'ajaxurl' => admin_url( 'admin-ajax.php' ),
));
wp_enqueue_script('gallery_load_more');

function more_post_ajax(){
    $html .= '<div class="col-12 col-md-6 col-lg-4 mb-30 event-items">';

    $html .= do_shortcode('[ngg_images gallery_ids='.$gallery_list->gid.' display_type=photocrati-nextgen_basic_thumbnails disable_pagination=1 images_per_page=1 show_all_in_lightbox=1 show_slideshow_link=0]');

    $html .= '</div>';
    echo $html;
}

add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');

In ajax response, It is showing shortcode as HTML text instead of gallery. I have tried many solutions and search about it but nothing helped me to solve this issue. I couldn't find that whats wrong with this code.

Any help would be appreciated. Thanks in Advance!