WordPress AJAX вызов возвращает всю страницу, а не только то, что я эхо - PullRequest
0 голосов
/ 13 декабря 2018

Я нашел несколько других актуальных вопросов по этому вопросу, но ни один из них не помогает.Я упростил свой код до минимума для этого упражнения, но я просто не вижу, что не так.Я проверил документы, несколько страниц за час ... какого черта!?

На странице шаблона у меня есть блок jQuery, который вызывает Ajax:

// I still have no idea why I have to do this like this...
ajaxscript = { ajax_url :'<?php echo $post->post_name; ?>'}

$.ajax({ 
    url     : ajaxscript.ajaxurl,
    data    : {
                    'action'    : 'mark_lesson',
                    'postname'  : '<?php echo $post->post_name; ?>6'
                },
    method  : 'POST',
    success : function(output) {
        console.log(output);
        $(this).closest('.a_course').find('.read_it_check').addClass('checked');
        $('#yur_here').hide();
    },
    error : function(e) {
         console.log(e);
    }
});

Первоначально у меня был код для PHP в том же файле, но это было глупо, верно?Это идет в functions.php ... не так ли?Во всяком случае, в functions.php:

/* Load Ajax Callback to "wp_ajax_*" Action Hook */
add_action( 'wp_ajax_mark_lesson', 'mark_lesson' );

// Marks off lessons seen via AJAX
function mark_lesson(){
    global $wpdb;
    print_r($wpdb);
    echo 'suckit';
    exit(); // required. to end AJAX request.
    die();
    wp_die();
}

Что тут напортачить?Нет даже достаточно кода, чтобы понять его неправильно, но он загадочным образом возвращает всю HTML-страницу, а НЕ то, что я повторяю.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Оказывается, у меня была опечатка.Первоначально я сделал это правильно, затем сделал ошибку при отладке, поставив

<?php echo $post->post_name; ?> 

вместо:

<?php echo admin_url( 'admin-ajax.php' ) ?>

Нет необходимости проходить через сложность локализации сценариев или чего-либо еще.Сейчас я передаю URL-адрес admin-ajax непосредственно в функцию ajax без лишних глупостей, и это, похоже, работает.

0 голосов
/ 13 декабря 2018

Возможно, у вас проблема с кодом ajaxscript.ajaxurl, поэтому попробуйте использовать этот код ниже в качестве URL.

// in JavaScript, object properties are accessed as ajax_object.ajax_url
    wp_localize_script( 'ajax-script', 'ajax_object',
            array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
}

для получения дополнительной информации посетите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...