我正在尝试构建一个用户可以关闭的简单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>
答案 0 :(得分:0)
您需要在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找不到要传递的动作。以上应该适合您。