Пользовательский вызов PHP AJAX для Wordpress возвращает 400 неверных запросов и не выполняется - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь создать простой баннер cookie, который пользователь может закрыть. Как только сеансы PHP и файлы cookie были установлены (принимая файлы cookie), баннер должен исчезнуть. Однако я получаю ошибку 400 неверных запросов.

jQUery:

jQuery(window).load(function(){
jQuery("#cookie-close").click(function(eve){  
    jQuery.ajax({
        type: "post",
        url: ajax_var.url,
        data: "action=close_cookies&nonce="+ajax_var.nonce, 
        success: function(result){

             if(result == '1'){
             alert(result);
             jQuery('.cookie-banner').fadeOut();
             } // end if data

        }
    });
    eve.preventDefault();

    return false;
    });
});

functions.php:

if (!session_id()) {
    session_start();
}

add_action( 'wp_enqueue_scripts', 'my_enqueue' );


function my_enqueue() {
 wp_enqueue_script('close_cookies', get_template_directory_uri().'/scripts/js/ajax.js', '1.0', 1 );
 wp_localize_script('close_cookies', 'ajax_var', array(
 'url' => admin_url('admin-ajax.php'),
 'nonce' => wp_create_nonce('ajaxnonce')
 ));
}

add_action( 'wp_ajax_my_post_like', 'close_cookies' );
add_action( 'wp_ajax_nopriv_my_post_like', 'close_cookies' );

function close_cookies(){
$_SESSION["close_cookies"] = true;
setcookie("close_cookies", true, time() + 60, "/", "", "", TRUE);
echo '1';
}

HTML:

<div class="cookie-banner">
<span id="cookie-close" class="btn btn-white-outlines">Accept</span>
</div>

1 Ответ

0 голосов
/ 15 октября 2019

Вам необходимо внести некоторые изменения в свой js-файл:

data: "action=close_cookies&nonce="+ajax_var.nonce, 

Изменить это на

data: {"action": "close_cookies", "nonce":ajax_var.nonce}, 

Изменить следующие две строки

add_action( 'wp_ajax_my_post_like', 'close_cookies' );
add_action( 'wp_ajax_nopriv_my_post_like', 'close_cookies' );

на

add_action( 'wp_ajax_close_cookies', 'close_cookies' );
add_action( 'wp_ajax_nopriv_close_cookies', 'close_cookies' );

Вы получаете этот ответ, потому что ajax не нашел действие, которое вы проходите. Выше должно работать на вас.

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