我正在处理一个ajax请求,我的函数上有几个ajax请求。php。所有这些都在发挥作用,但这:
在我的php上,我有:
add_action("wp_ajax_fb_points", "get_fb_points");
add_action("wp_ajax_nopriv_fb_points", "get_fb_points");
function get_fb_points(){
if ( !wp_verify_nonce($_REQUEST[\'nonce\'], \'fb_points_nonce\')) {
exit(\'No naughty business\');
}
echo \'yeah\';
die();
}
在页脚上。php我有:
FB.Event.subscribe(\'edge.create\',
function(response) {
if(response == \'<?php echo get_facebook_profile(\'link\'); ?>\') {
$.ajax({
url: \'<?php echo admin_url(\'admin-ajax.php\'); ?>\',
data: { action: \'fb_points\', challenge : 2, nonce : \'<?php echo wp_create_nonce(\'fb_points_nonce\'); ?>\' },
async: false,
success: function(data){
console.log(data);
}
});
}
}
);
但我不知道为什么它不起作用,请求-响应是“没有令人恶心的事情”。有谁能帮我找出问题所在吗?
SO网友:Chris_O
使用ajax传递数据时,我更喜欢使用check_ajax_referer 而不是wp\\u verify\\u nonce。
B.Event.subscribe(\'edge.create\',
function(response) {
if(response == \'<?php echo get_facebook_profile(\'link\'); ?>\') {
$.ajax({
url: \'<?php echo admin_url(\'admin-ajax.php\'); ?>\',
data: { action: \'fb_points\', challenge : 2, _ajax_nonce : \'<?php echo wp_create_nonce(\'fb_points_nonce\'); ?>\' },
async: false,
success: function(data){
console.log(data);
}
});
}
}
);
function get_fb_points(){
check_ajax_referer( \'fb_points_nonce\');
echo \'yeah\';
die();
}
我相信您的方法不起作用,因为您使用的是$\\u请求而不是$\\u POST。
function get_fb_points(){
$nonce = $_POST[\'nonce\'];
if ( !wp_verify_nonce( $nonce, \'fb_points_nonce\')) {
exit(\'No naughty business\');
}
echo \'yeah\';
die();
}