【发布时间】:2013-09-19 20:44:14
【问题描述】:
我目前让我的 jQuery 根据错误或成功在同一个 div 中输出结果:
HTML
<div id="error-message").html(res);
JQUERY
jQuery('#register-me').on('click',function(){
$("#myform").hide();
jQuery('#loadingmessage').show();
var action = 'register_action';
var username = jQuery("#st-username").val();
var mail_id = jQuery("#st-email").val();
var firname = jQuery("#st-fname").val();
var lasname = jQuery("#st-lname").val();
var passwrd = jQuery("#st-psw").val();
var ajaxdata = {
action: 'register_action',
username: username,
mail_id: mail_id,
firname: firname,
lasname: lasname,
passwrd: passwrd,
}
jQuery.post( ajaxurl, ajaxdata, function(res){
$('#loadingmessage').hide();
$("#myform").show();
jQuery("#error-message").html(res);
});
});
PHP
$error = '';
$uname = trim( $_POST['username'] );
$email = trim( $_POST['mail_id'] );
$fname = trim( $_POST['firname'] );
$lname = trim( $_POST['lasname'] );
$pswrd = $_POST['passwrd'];
if( empty( $_POST['username'] ) )
$error .= '<p class="error">Enter Username</p>';
if( empty( $_POST['mail_id'] ) )
$error .= '<p class="error">Enter Email Id</p>';
elseif( !filter_var($email, FILTER_VALIDATE_EMAIL) )
$error .= '<p class="error">Enter Valid Email</p>';
if( empty( $_POST['passwrd'] ) )
$error .= '<p class="error">Password should not be blank</p>';
if( empty( $_POST['firname'] ) )
$error .= '<p class="error">Enter First Name</p>';
elseif( !preg_match("/^[a-zA-Z'-]+$/",$fname) )
$error .= '<p class="error">Enter Valid First Name</p>';
if( empty( $_POST['lasname'] ) )
$error .= '<p class="error">Enter Last Name</p>';
elseif( !preg_match("/^[a-zA-Z'-]+$/",$lname) )
$error .= '<p class="error">Enter Valid Last Name</p>';
if( empty( $error ) ){
$status = wp_create_user( $uname, $pswrd ,$email );
if( is_wp_error($status) ){
$msg = '';
foreach( $status->errors as $key=>$val ){
foreach( $val as $k=>$v ){
$msg = '<p class="error">'.$v.'</p>';
}
}
echo $msg;
} else {
$msg = '<p class="success">Registration Successful</p>';
echo $msg;
}
} else {
echo $error;
}
die(1);
}
}
我对如何在 2 个不同的地方获得结果感到困惑。
1:错误=显示错误并显示表单,理想情况下错误应该显示在每个表单字段下方,目前是表单顶部的一个div
2:成功=隐藏表单,只显示成功消息
【问题讨论】:
-
你到底在坚持什么?
-
为什么不先验证客户端,然后再进行 ajax 请求
-
@Pekka웃 目前错误和成功都显示在同一个 div 中,我不知道如何在不同的 html 位置获得不同的结果
-
@Armand 我已经尝试了验证插件但没有成功,而且 php 已经在检查错误,如果你问我,我完全同意你的看法。我很高兴得到一些帮助
-
您当前代码的问题是它会将 php 的结果附加为一组数据,您可以尝试的一件事是在每个错误上创建一个错误数组并将其序列化,而不是 echo到带有键值的 JSON,其中键可以是您要显示错误消息的 id 和要显示的消息的值的元素,您可以在 javascript 循环中遍历数组并附加 html
标签: javascript php jquery ajax