Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

AJAX Wordpress Not Reading Variable

Posted on 2017-03-13
2
Medium Priority
?
103 Views
Last Modified: 2017-03-14
I need to increase the number by 18 each time the AJAX it runs.  But it does not see the offset that I have created.
LINE 4 of the html grabs the offset
and passes it to line: 15  of the SCRIPT.

IN The PHP line:5 & 10  / offset does not seem to be set.

But Line:82  is updated with the correct number and is placed back on the page through the script

What am I doing wrong that the offset is not reading the number?
<?php
function be_ajax_load_more_all() {

$offset = isset($_POST['offt']) ? $_POST['offt'] : false;
$offset = intval($offset);

    $args = array(
        'nopaging' => true,
        'posts_per_page' => 18,
        'offset' => $offset,
        'post_type' => 'post',
        'post_status' => 'publish',
        'suppress_filters' => true
    );
    ob_start();
    $posts_array = get_posts($args);
    global $post;
    foreach ($posts_array as $post) {
        $field_name = "show_video";
        $id = $post->ID;
        $video = get_field($field_name, $id);
        $category = $category[0]->cat_name;
        $title = $post->post_title;
        $title = mb_strimwidth($title, 0, 50, '...');
        $tumbnail = get_the_post_thumbnail($id);
        $category = get_the_category();
        ?>      


        <div class="col-md-4 col-sm-6 col-xs-12">
            <div id="post-<?php echo $id; ?>" <?php post_class(); ?>>
                <div class="item" onclick="document.location.href = '<?php the_permalink($post->ID); ?>'; return false">

                    <div class="thumbnail">


        <?php
        if (!empty($video)) {
            echo '<div class="video-play">
                                            <img src="' . get_home_url() . '/wp-content/themes/surfline/img/playbtn.svg" alt="video" class="video-play-controller">
                                            </div>';
        }
        ?>   
                        <?php
                        $title = get_the_title();
                                        the_post_thumbnail($id, array( 'title' => $title,  'alt'   => $title )); 
                        ?>         </div>


                    <div class="meta">

        <?php
        foreach ($category as $c) {
            $cat_name = $c->cat_name;
            $cat_slug = $c->slug;
            echo '<a href="../' . $cat_slug . '">' . $cat_name . '</a>';
            break;
        }
        ?> 

                        <span><i class="fa fa-clock-o" aria-hidden="true"></i>&nbsp;<?php echo get_the_date('Y-m-d'); ?>  
        <?php
        $before = "| <strong>Updated</strong>&nbsp;";
        if (get_the_modified_time('U') != get_the_time('U')) {
            echo $before;
            echo human_time_diff(get_the_modified_date('U'), current_time('timestamp')) . ' ' . __('ago');
        }
        ?>
                        </span>

                    </div>
        <?php echo'<div class="headline">' . $title . '</div>'; ?>

                </div>
            </div>
        </div>
        <?php
    }
    //  END Foreach
$offset = $offset + 18;
    ?>
<div id="offsets" style="display:none;"><?php echo $offset; ?></div>
<?php
    wp_reset_postdata();
    $data = ob_get_clean();
    wp_send_json_success($data);
    wp_die();
}

Open in new window


<script>
jQuery(function ($) {
    $('.post-listing-all').append('<span class="load-more"></span>');
    var button = $('.post-listing-all .load-more');
    var page = 2;
    var loading = false;
    var scrollHandling = {
        allow: true,
        reallow: function () {
            scrollHandling.allow = true;
        }
    };

    $(window).scroll(function () {
        var offt = $('#offsets').html()
        if (!loading && scrollHandling.allow) {
            scrollHandling.allow = false;
            setTimeout(scrollHandling.reallow, scrollHandling);
            var offset = $(button).offset().top - $(window).scrollTop();
            if (700 > offset) {
                loading = true;
                $('#loading-image').bind('ajaxStart', function(){
    $(this).show();
}).bind('ajaxStop', function(){
    $(this).hide();
});
                var data = {
                    action: 'be_ajax_load_more_all',
                    page: page,
                    offt:offt,
                    query: beloadmore.query,
                };
                $.post(beloadmore.url, data, function (res) {
                 $( "#offsets" ).remove();
                    if (res.success) {
                        $('.post-listing-all').append(res.data);
                        $('.post-listing-all').append(button);
                        page = page + 1;
                        loading = false;
                    } else {
                        //console.log(res);
                         //console.log('hi');
                    }
                }).fail(function (xhr, textStatus, e) {
                    //console.log(xhr.responseText);
                    //console.log('fail');
                });

            }
        }
    });
    
});

Open in new window


<html>
<div id="offsets" style="display:none;">18</div>

Open in new window

0
Comment
Question by:rgranlund
2 Comments
 
LVL 60

Accepted Solution

by:
Julian Hansen earned 2000 total points
ID: 42047581
Try changing nopaging to false

 $args = array(
        'nopaging' => false, // <=== CHANGE THIS
        'posts_per_page' => 18,
        'offset' => $offset,
        'post_type' => 'post',
        'post_status' => 'publish',
        'suppress_filters' => true
    );

Open in new window

0
 
LVL 7

Author Comment

by:rgranlund
ID: 42048017
It was this line: $offset = intval($offset);
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When crafting your “Why Us” page, there are a plethora of pitfalls to avoid. Follow these five tips, and you’ll be well on your way to creating an effective page.
Without even knowing it, most of us are using web applications on a daily basis.  In fact, Gmail and Yahoo email, Twitter, Facebook, and eBay are used by most of us daily—and they are web applications. We generally confuse these web applications to…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…
HTML5 has deprecated a few of the older ways of showing media as well as offering up a new way to create games and animations. Audio, video, and canvas are just a few of the adjustments made between XHTML and HTML5. As we learned in our last micr…
Suggested Courses

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question