在WordPress AJAX中获取表单的值

时间:2019-11-18 作者:Bhanu

我有一个AJAX提交表单。我得到的字段值为null。

jQuery(\'#DownloadForm\').submit(ajaxSubmit);

 function ajaxSubmit() {
    var DownloadForm = jQuery(this).serialize();
    jQuery.ajax({
      type:    "POST",
      url:     aj_ajax_demo.ajax_url,
       data : {
                action : \'set_lead_cookie_and_mail\',  // Note that this is part of the add_action() call.
                nonce : aj_ajax_demo.aj_demo_nonce,  // Note that \'aj_demo_nonce\' is from the wp_localize_script() call.
                form_data : DownloadForm
            },
      success: function(response) {
          console.log(response);

      }
    });
    return false;
  }
这就是我获取数据的方式。

add_action( \'wp_ajax_nopriv_set_lead_cookie_and_mail\', \'mail_and_cookie_function\' );
add_action( \'wp_ajax_set_lead_cookie_and_mail\', \'mail_and_cookie_function\' ); 

function mail_and_cookie_function() {
    check_ajax_referer( \'aj-demo-nonce\', \'nonce\' );  // This function will die if nonce is not correct.

    $name =  sanitize_text_field($_POST["wpcf-lead-name"]);
    $email =  sanitize_text_field($_POST["wpcf-lead-email"]);
    $number =  sanitize_text_field($_POST["wpcf-lead-number"]);
    $class =  $_POST["wpcf-class"];
    $category =  sanitize_text_field($_POST["hidden_category"]);

    if(!$_COOKIE[$category]) {      
        setcookie($category, "1", time()+2592000);
        wp_send_json($class);
    }
    wp_die();
}

我的响应标头正确发送了所有数据。

我的响应为null。我希望得到所提交表格的价值。

2 个回复
最合适的回答,由SO网友:Bhanu 整理而成

所以我找到了问题的答案。使用parse_str($_POST[\'form_data\'], $form_data); 在我的函数中,允许我调用所有字段值$name = $form_data["wpcf-lead-name"];

现在,我的新函数如下所示。

function mail_and_cookie_function() {
    check_ajax_referer( \'aj-demo-nonce\', \'nonce\' );  
    parse_str($_POST[\'form_data\'], $form_data); // This is the new added line
    $name =  $form_data["wpcf-lead-name"];  // This is how you call the field.
    $email =  $form_data[\'wpcf-lead-email\'];
    $number = $form_data["wpcf-lead-number"];
    $class =  $form_data["wpcf-class"];
    $category =  $form_data["hidden_category"];

    if(!$_COOKIE[$category]) {      
        setcookie($category, "1", time()+2592000);
        wp_send_json("redirecting");
    }
    wp_die();
}

SO网友:moped

您应该将函数重命名为set_lead_cookie_and_mail 并在add_action() 还有<看起来像是你的行动set_lead_cookie_and_mail 在您的ajax中,调用从未到达,它是否存在?

相关推荐

使用AJAX加载更多帖子|帮助我更改按钮上的措辞以通知用户

我的大脑有点融化了,我在上一个网站上使用了一种代码风格,我会修改用户点击的按钮上的措辞以加载更多内容。我已经创建了一个过滤器按钮的工作示例,但似乎看不到如何将其应用于“加载更多”按钮。当前,用户将单击“加载更多”,等待5秒钟,然后新内容将附加到旧内容。我希望他们点击加载更多,措辞将更改为加载,然后当内容加载时,措辞将恢复为加载更多。这是我举的一个例子working (don\'t amend this code) 在某些筛选器上。。。jQuery(function(n) { n(\"#ad