Php $\u POST数据未通过AJAX传递到Wordpress中的my函数
我在Wordpress中创建了一个AJAX函数。该函数在表单提交时调用。该函数已运行,但未接收我提交的任何表单数据。我错过了什么 PHP函数 我在这里添加了PHP函数,该函数通过AJAX成功调用。此表单成功创建了一个新用户,但仅当我手动创建变量时(例如,请参阅$new_user_data['user_login']='This Text Works';)。由于某些原因,$\u POST数据没有通过函数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
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。也就是说,它仍然在重新加载页面??Adde.preventDefault()在提交函数时将code>添加到函数中,不要忘记将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');
},
});
});