Simple wordpress ajax query is not working

406 Views Asked by At

Do you have any idea why this simple wp ajax query is not working? It always returns fail. Console -> https://pastebin.com/TABQCjXe

jQuery(document).ready(function($) {

// This does the ajax request
$.ajax({
    type: 'post',
    url: ajaxurl,
    data: {
        'action':'prefix_load_cat_posts'
    },
    success:function(data) {
        // This outputs the result of the ajax request
        console.log(data);
        $( ".prefix_load_cat_posts" ).append("success");
    },
    error: function(errorThrown){
        console.log(errorThrown);
        $( ".prefix_load_cat_posts" ).append("fail");
    }
});

});

PHP -> https://pastebin.com/g4QiWDky

3

There are 3 best solutions below

0
Ismail On BEST ANSWER

The action should be load-filter instead of prefix_load_cat_posts. Seeing your PHP code, the prefix_load_cat_posts is actually the callback function name.

data: {
    'action':'load-filter'
},
0
Stan Chechun On

Your action it's 'load_filter', Also you are must be localize ajaxurl use this function wp_localize_script

$.ajax({
        type: 'post',
        url: ajaxurl,
        data: {
            'action':'load-filter'
        },
        success:function(data) {
            // This outputs the result of the ajax request
            console.log(data);
            $( ".prefix_load_cat_posts" ).append("success");
        },
        error: function(errorThrown){
            console.log(errorThrown);
            $( ".prefix_load_cat_posts" ).append("fail");
        }
    });
0
Akshay Shah On

There is another alternate option. I am agree with samuel but i am sharing one more option

add_action( 'wp_ajax_nopriv_prefix_load_cat_posts', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_prefix_load_cat_posts', 'prefix_load_cat_posts' );