2014-10-30 64 views
0

我试图通过AJAX触发一个PHP函数,在我的wordpress网站上点击一个按钮后,使用wordpress随机数来确保进程的安全。WordPress的AJAX随机数不会验证

一切工作正常,除了因为某些原因不会验证的随机数,所以我的-1被返回。我错过了什么?

我在functions.php的代码

add_action('wp_enqueue_scripts', 'button_click_ajax_scripts'); 
function button_click_ajax_scripts() { 
    if (! is_admin()) { 
     wp_enqueue_script('button_click_ajax', get_stylesheet_directory_uri() . '/js/button_click_ajax.js', array ('jquery'), false, true); 
     $params = array(
      'nonce' => wp_create_nonce('button_nonce'), 
      'ajaxURL' => admin_url('admin-ajax.php'), 
     ); 
     wp_localize_script('button_click_ajax', 'params', $params); 
    } 
} 
add_action('wp_ajax_button_click_ajax_callback', 'button_click_ajax_callback'); // only works if user logged in 
function button_click_ajax_callback() { 
    check_ajax_referer('button_nonce', 'security'); 
    echo "success"; 
    die; 
} 

我在button_click_ajax.js代码

jQuery(document).ready(function($) { 
    $("#button").click(function() { 
     console.log('Button clicked.'); 
     $.get(
      params.ajaxURL, { 
       'action': 'button_click_ajax_callback', 
       'security:': params.nonce, 
      }, 
      function(response) { 
       // Do stuff here 
       $('#button').replaceWith(response); 
      } 
     ); 
    }); 
}); 

回答

1

一个小错字,用'security': params.nonce代替'security:': params.nonce

+0

不能相信我错过了!谢谢 – user1684046 2014-10-30 23:28:30

0

你也应该先注册脚本,然后本地化,然后入队:

wp_register_script('button_click_ajax', get_stylesheet_directory_uri() . '/js/button_click_ajax.js', array ('jquery'), false, true); 
$params = array(
    'nonce' => wp_create_nonce('button_nonce'), 
    'ajaxURL' => admin_url('admin-ajax.php'), 
); 
wp_localize_script('button_click_ajax', 'params', $params); 
wp_enqueue_script('button_click_ajax');