Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\u POST数据未通过AJAX传递到Wordpress中的my函数_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Php $\u POST数据未通过AJAX传递到Wordpress中的my函数

Php $\u POST数据未通过AJAX传递到Wordpress中的my函数,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我在Wordpress中创建了一个AJAX函数。该函数在表单提交时调用。该函数已运行,但未接收我提交的任何表单数据。我错过了什么 PHP函数 我在这里添加了PHP函数,该函数通过AJAX成功调用。此表单成功创建了一个新用户,但仅当我手动创建变量时(例如,请参阅$new_user_data['user_login']='This Text Works';)。由于某些原因,$\u POST数据没有通过函数 add_action("wp_ajax_register_user", __NAMESPACE

我在Wordpress中创建了一个AJAX函数。该函数在表单提交时调用。该函数已运行,但未接收我提交的任何表单数据。我错过了什么

PHP函数 我在这里添加了PHP函数,该函数通过AJAX成功调用。此表单成功创建了一个新用户,但仅当我手动创建变量时(例如,请参阅$new_user_data['user_login']='This Text Works';)。由于某些原因,$\u POST数据没有通过函数

add_action("wp_ajax_register_user", __NAMESPACE__ . "\\register_user");
add_action("wp_ajax_nopriv_register_user", __NAMESPACE__ . "\\register_user");

function register_user() {

  // NONCE VERIFICATION
  if ( !wp_verify_nonce( $_REQUEST['nonce'], "rtr_register_nonce")) {
  exit("Oops! This is embarassing!");

  }

 // Get all post data for the user.

 $new_user_data = array();
 $new_user_data['first_name'] = sanitize_text_field($_POST['first-name']);
 $new_user_data['last_name'] = sanitize_text_field($_POST['last-name']);
 $new_user_data['user_email'] = $_POST['email'];
 $new_user_data['user_pass'] = sanitize_text_field($_POST['password']);

 $new_user_data['user_login'] = 'This Text Works';
 $new_user_data['role'] = 'subscriber';

 // Create the User
 $registered_user = wp_insert_user( $new_user_data );


 $result['user'] = $registered_user;

 // AJAX CHECK
 if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  $result = json_encode($result);
  echo $result;

} else {

  header("Location: ".$_SERVER["HTTP_REFERER"]);

}

die();


}
JQuery 形式

将method=“post”添加到您的“表单”-“get”是默认值,“user\u login”是用户的用户名,因此可能不接受空格

另见

请尝试传递一些用户名,如“custom_user”,然后查看结果


希望这能起作用。

看来您没有触发
registerUser()
检查下面的脚本是否适合我

jQuery(document).ready(function($) {
    jQuery('body').on('click', '#nextBtn', function() {
            registerUser();
        });
});

function registerUser(){

    var nonce = jQuery('#regForm').attr("data-nonce");
    var formData = jQuery('#regForm').serialize();

    jQuery.ajax({
        url: ajaxurl,
        type: 'post',
        dataType: 'json',
        data : {action: 'register_user', nonce: nonce, formData: formData},
        success: function (response) {
          console.log(response);
          $('#regForm').html('Your form has been submitted successfully');
        },

    });
}

好的,这里的每个人都帮了我一点忙。但是,是的,我正确地调用了AJAX,但实际上并没有提交表单。我在表单中添加了一个.on(submit),然后在表单中添加了一个侦听器来执行提交时的AJAX调用。以下是修正案

function nextPrev(n) {

    var x = document.getElementsByClassName("form-tab");

        if (n === 1 && !validateForm()) {
          return false;
        }

        x[currentTab].style.display = "none";

        currentTab = currentTab + n;

        if (currentTab >= x.length) {

        // ADDED THIS SUBMIT() HERE
          document.getElementById("regForm").submit();
          return false;
        }
        // Otherwise, display the correct tab:
        showTab(currentTab);
      }


      // ADDED AN EVENT LISTENER TO TRIGGER THE AJAX CALL HERE
      $('#regForm').on('submit', function () {

          var nonce = $('#regForm').attr("data-nonce");
          var formData = $('#regForm').serialize();

          $.ajax({
            url: rtr_register_user.ajaxUrl,
            type: 'post',
            dataType: 'json',
            data: {
              action: 'register_user',
              nonce: nonce,
              formData: formData
            },
            success: function (response) {
              console.log(response);
              $('#regForm').html('Your form has been submitted successfully');
            },


          });

        });


请求ajax是否没有错误?我怀疑你的ajax调用没有触发。你能把$u POST的内容倒出来并检查那里有什么数据吗?ajax没有给我任何错误@ThamaraiselvamIf i var\u dump$POST它在控制台给我一个400错误,没有运行@flynorc-我实际上是在把它写到控制台,而不是var\u dump。你能在这里发布请求吗Ajax?OP的参数正在使用代码中未显示的Ajax发送请求。从所显示的内容来看,没有完整的流。
从所显示的内容来看,没有完整的流
Ya,我们不知道OP是如何调用
registerUser()
method的,但是OP是从表单操作调用ajax.php的。。。。。。。。(似乎修复表单方法或JS调用就是答案……但是,它在哪里调用nextPrev?抱歉,我实际上在那里使用了一个字符串-‘test’。WP Insert Post工作正常。函数中没有传递的是$\u Post数据。哦,然后你必须看到Ajax参数和响应。尝试通过var进行调试_转储($results)还有,看看回复。好的,我现在已经修复了它。似乎这是一个组合。调用了AJAX,但没有提交表单。感谢您帮助解决这个问题。您不能同时执行这两个操作。执行表单提交或AJAX。无论如何,很高兴您发现了问题。我在@GerritLuimstra下面发布了一个更完整的答案。我很高兴很高兴感谢Thamaraiselvam的输入,但这并不完整。虽然我不是一个大的堆栈溢出用户,所以如果这不是我应该做的事情,那么我很高兴将其标记为答案。@Mando,正如你提到的答案,似乎有点复杂,我用你所有的代码创建了一个新的插件来检查你的脚本。在lea这会激励我。不管怎样,你找到了自己的路。很高兴见到你。我对你的答案投了赞成票。不确定它是否有效?向上箭头变成橙色。实际上,这是通过post方法实现的,但它实际上没有使用AJAX。也就是说,它仍然在重新加载页面??Add
e.preventDefault()添加到函数中,不要忘记将
e
参数作为参数添加到顶部的函数中;)
jQuery(document).ready(function($) {
    jQuery('body').on('click', '#nextBtn', function() {
            registerUser();
        });
});

function registerUser(){

    var nonce = jQuery('#regForm').attr("data-nonce");
    var formData = jQuery('#regForm').serialize();

    jQuery.ajax({
        url: ajaxurl,
        type: 'post',
        dataType: 'json',
        data : {action: 'register_user', nonce: nonce, formData: formData},
        success: function (response) {
          console.log(response);
          $('#regForm').html('Your form has been submitted successfully');
        },

    });
}
function nextPrev(n) {

    var x = document.getElementsByClassName("form-tab");

        if (n === 1 && !validateForm()) {
          return false;
        }

        x[currentTab].style.display = "none";

        currentTab = currentTab + n;

        if (currentTab >= x.length) {

        // ADDED THIS SUBMIT() HERE
          document.getElementById("regForm").submit();
          return false;
        }
        // Otherwise, display the correct tab:
        showTab(currentTab);
      }


      // ADDED AN EVENT LISTENER TO TRIGGER THE AJAX CALL HERE
      $('#regForm').on('submit', function () {

          var nonce = $('#regForm').attr("data-nonce");
          var formData = $('#regForm').serialize();

          $.ajax({
            url: rtr_register_user.ajaxUrl,
            type: 'post',
            dataType: 'json',
            data: {
              action: 'register_user',
              nonce: nonce,
              formData: formData
            },
            success: function (response) {
              console.log(response);
              $('#regForm').html('Your form has been submitted successfully');
            },


          });

        });