2014-10-30 69 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');