2015-10-19 121 views
0

我在Wordpress中有一个电子邮件表单,我正在使用ajax。Wordpress ajax表单随机数失败

我在窗体中创建一个随机数并在发送电子邮件之前检查它。

随机数失败,但输出显示它是相同的随机数。

Simified代码:

电子邮件形式

<form class="email-form" role="form"> 

     <div class="form-group"> 
      <label>Full Name</label>  
      <input type="text" class="email-name input-lg"/> 
     </div> 

     <div class="form-group"> 
      <label>Email</label>  
      <input type="text" class="email-email input-lg"/> 
     </div> 

     <input type="hidden" name="ajax-nonce" id="ajax-nonce" value="' <?php echo wp_create_nonce('email-nonce'); ?>'" /> 

     <div class="form-group email-submit"> 
      <button class="btn-green email-submit">Send</button> 
     </div> 

    </form> 

JS的

$('.email-submit').on('click', function(e){  

     e.preventDefault(); 

     var mc_name = $('.email-name').val(); 
     var mc_email = $('.email-email').val(); 
     var mc_nonce = $('#ajax-nonce').val(); 

     alert(mc_nonce); 

     classData = { 
      'type' : 'post', 
      'action' : 'classajax-submit', 
      'dataType' : 'jsonp', 
      'crossDomain' : true, 
      'nonce' : mc_nonce, 

      'the_name' : mc_name, 
      'the_email' : mc_email, 

     } 

     $.post(TheAjax.ajaxurl, classData).done(function(result){   

      if(result == 'success') { 

       //success message 

      } 
      }, 'jsonp'); 
    }) 

的functions.php

add_action('wp_enqueue_scripts', 'add_my_script'); 

    function add_my_script() { 
     wp_enqueue_script('scripts',get_template_directory_uri() . '/js/compiled/main.min.js', array('jquery')); 
     // 
     wp_localize_script('scripts', 'TheAjax', array( 
     'ajaxurl' => admin_url('admin-ajax.php') 
    )); 
    } 


    add_action('wp_ajax_nopriv_classajax-submit', 'classajax_submit'); 
    add_action('wp_ajax_classajax-submit', 'classajax_submit'); 

    function classajax_submit() { 

     $nonce = stripslashes($_POST['nonce']); 

     echo 'nonce in php ' . $nonce; 

     if (! wp_verify_nonce($nonce, 'email-nonce')) { 
      die ('Email Busted!'); 


     }else{ 



     } 
    } 
+0

尝试附加与现时当前字符串,这样你不会得到 –

回答

3

首先,你需要不创建隐藏字段使用它它会c reate它会自动

<?php wp_nonce_field('your_action', 'put_name'); ?> 

,同时检查if(wp_verify_nonce($_POST[ 'put_name' ], 'your_action')) 试试这个

+0

我现在在wp_nonce_field和我有一些错别字在本地工作。我现在的问题是它不能在活动服务器上工作。在现场服务器上,我收到'Email Busted',这是wp_verify_nonce失败的情况 – ttmt

+0

你想说它在其他条件验证失败? – WisdmLabs