我在Wordpress页面模板中有此自定义表单
<?php if(!is_user_logged_in()) {
if(get_option(\'users_can_register\')) {
if($_POST){
$username = $wpdb->escape($_REQUEST[\'user_login\']);
if(empty($username)) {
echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />You have to fill in the username.";
exit();
}
$email = $wpdb->escape($_REQUEST[\'user_email\']);
if(!preg_match("/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/", $email)) {
echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />please use a calid e-mailadress.";
exit();
}
//$random_password = wp_generate_password( 12, false );
$pass1 = $wpdb->escape($_REQUEST[\'pass1\']);
$pass2 = $wpdb->escape($_REQUEST[\'pass2\']);
if ($pass1 != $pass2){
echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />please use a passwords don\'t match.";
exit();
}
$random_password = $pass1;
$status = wp_create_user( $username, $random_password, $email );
if ( is_wp_error($status) )
echo "<span style=\'color:#FF0000\'><strong>Feil..</strong></span><br /><br />Username allready exist. please try another one.";
else {
$from = get_option(\'admin_email\');
$headers = \'From: \'.$from . "\\r\\n";
$subject = "Registration ok!";
$msg = "Welcome, you are now registered. Here is your username and password.\\Info:\\Username: $username\\Password: $random_password";
wp_mail( $email, $subject, $msg, $headers );
echo "<strong>You are now registered. An e-mail is now sent to you with your username and password..";
}
exit();
} else { ?>
<form method="post" action="<?php echo site_url(\'wp-login.php?action=register\', \'login_post\') ?>" id="registerform" class="col-xs-12" name="registerform">
<div class="row">
<div class="col-xs-12 col-md-6">
<p>
<label for="user_login">Username</label>
<input id="user_login" class="input" type="text" size="20" value="" name="user_login">
</p>
<p>
<label for="user_email">Email</label>
<input id="user_email" class="input" type="email" size="25" value="" name="user_email">
</p>
<p>
Password <input type="password" name="pass1" size="25" value="">
Repeat Password <input type="password" name="pass2" size="25" value="">
</p>
</div>
<div class="submit">
<input id="wp-register" class="button-primary pull-right col-xs-12 col-md-3" type="submit" value="Register" name="wp-submit" tabindex="103">
<input type="hidden" value="/login-area/?action=register&success=1" name="redirect_to">
<input type="hidden" name="user-cookie" value="1" />
</div>
</div>
</form>
<script type="text/javascript">
jQuery("#wp-register").click(function() {
var input_data = jQuery(\'#registerform\').serialize();
jQuery.ajax({
type: "POST",
url: "<?php echo "http://" . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']; ?>",
data: input_data,
success: function(data){
alert(\'Success\');
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status); // I would like to get what the error is
}
});
return false;
});
</script>
<?php }
} else ?>
Already registered? Login to your account with the form in the sidebar.
<?php } else { ?>
You are already logged in...
<?php } ?>
PHP似乎工作正常,因为当我控制台记录它时,当出现错误时,我会得到正确的消息。
如何在Ajax成功或错误函数中显示这些错误?
即使有一些错误,我使用的代码似乎总是能够到达success函数。
我想知道有哪些错误,并在页面的某个地方打印一条带有错误类型的消息,如果成功,我想打印一条成功的消息。
SO网友:HADI
我遇到了同样的问题。以上任何一项都不适合我。请确保将ajax调用的数据类型设置为“html”而不是“json”
示例代码:
$.ajax({
url: ajaxurl,
type: \'POST\',
dataType: \'html\',
cache: false,
data: { data: data, action: \'jseditajax\' }
})
.done(function(response) {
response = response.slice(0, - 1); // removing 0 at last string position
response = JSON.parse(response); // string to JSON
console.log(response);
});
在PHP文件中,您可以简单地-
echo json_encode($your_array);
我希望这有帮助!