Ajax 注册不返回任何值或错误
Ajax registration not returning any value or error
Ajax在我的注册表中无法正常运行。我有一个名为 register_process.php
的注册页面。
我运行$_POST
中的变量并回显出变量$error
。然后我想使用这个变量并将其添加到 id #register_msg
的div 中。变量$error
将包含div
包装和内容。
但是,我没有收到来自 ajax 请求的错误或成功反馈。我也没有收到任何控制台错误。怎么来了?
这是我的Ajax代码:
<script src="/scripts/jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function(){
$('#reg_register').click(function(){
var fullname=$("#reg_fullname").val();
var email=$("#reg_email").val();
var password1=$("#reg_password1").val();
var password2=$("#reg_password2").val();
var register=$("#reg_register").val();
var dataString = 'fullname='+fullname+'&email='+email+'&password1='+password1+'&password2='+password2+'®ister='+register;
$.ajax({
type: "POST",
url: "register_process.php",
data: dataString,
cache: false,
beforeSend: function(){
$("#reg_register").val('Connecting...');
},
success: function(result){
if(result){
$("#register_msg").html(result);
}
},
error: function(jqXHR, textStatus, errorThrown){
alert('error');
}
});
});
});
</script>
我的表格
<form method="post">
Fullname:<br>
<input type='text' name='fullname' id="reg_fullname" /><br>
Email:<br>
<input type="text" name="email" id="reg_email" /><br>
Password:<br>
<input type="password" name="password1" id="reg_password1" /><br>
Confirm password:<br>
<input type="password" name="password2" id="reg_password2" /><br>
<input type="submit" name="register" value="Register" id="reg_register" />
</form>
我的 PHP 注册检查:
$req_error = "";
$req_success = "";
/** REGISTRATION FORM **/
if(isset($_POST['register'])){
if((!empty($_POST['fullname'])) AND (!empty($_POST['email'])) AND (!empty($_POST['password1'])) AND (!empty($_POST['password2']))){
/** FROM POST TO VARIABLE **/
$email = $_POST['email'];
$fullname = $_POST['fullname'];
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
/** VALIDATE EMAIL **/
if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
$req_error .= $database_reg_6;
}
/** DUPLICATE EMAIL **/
$sql = "SELECT id FROM users WHERE email = :email LIMIT 1";
$result = $db_connect->prepare($sql);
if($result->execute(array(':email' => $email))){
$email_count = $result->rowCount();
if($email_count != 0){
$req_error .= $database_reg_7;
}
$result = NULL;
}
else{
$req_error .= $database_reg_8;
}
/** CHECK FULL NAME **/
$regex = "/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+/";
if(!preg_match($regex, $fullname)){
$req_error .= $database_reg_9;
}
/** CHECK PASSWORD **/
if($password1 !== $password2){
$req_error .= $database_reg_10;
}
/** AFTER VALIDATION OF FORM **/
if(empty($req_error)){
$password_hash = password_hash($password, PASSWORD_BCRYPT);
$unique_veri = getToken(10);
$sql = "INSERT INTO users (access_level, fullname, email, password, verification,registered) VALUES ('0',:fullname,:email,:password,:verification, NOW())";
$result = $db_connect->prepare($sql);
if($result->execute(array(':fullname' => $fullname,':email' => $email, ':password' => $password_hash, ':verification' => $unique_veri))){
$mail_receiver = $email;
$mail_subject = 'Account verification required';
$verify_url = 'http://'.$_SERVER['SERVER_NAME'].'/register?v='.$unique_veri;
$mail_message = 'This email contains your verification URL. Click it to confirm you are the correct owner of the account.<br>';
$mail_message .= '<a href="'.$verify_url.'">Verification Link</a><br>';
$mail_headers = 'Content-type: text/html; charset=utf-8'."'r'n".'From: example.no <dont-reply@example.no>'."'r'n".'Reply-To: example.no <dont-reply@example.no>'."'r'n".'X-Mailer: PHP/'.phpversion();
if(mail($mail_receiver, $Mail_subject, $mail_message, $mail_headers)){
$req_success .= $database_reg_11;
}
else{
$req_error .= $database_reg_12;
}
}
else{
$req_error .= $database_reg_13;
}
}
}
else{
$req_error .= $database_reg_14;
}
}
if(!empty($req_error)) {
echo '<div id="register-msg-e">';
echo '<div id="register-discard"><img src="/img/mobile-menu-active.png" height="15px" width="15px" alt="Discard Button"></div>';
echo '<p>'.$req_error.'</p>';
echo '</div>';
}
elseif(!empty($req_success)){
echo '<div id="register-msg-s">';
echo '<div id="register-discard"><img src="/img/mobile-menu-active.png" height="15px" width="15px" alt="Discard Button"></div>';
echo '<p>'.$req_success.'</p>';
echo '</div>';
}
终于我想通了。您的 HTML 字段位于表单内。当您单击"提交"按钮时,您会触发 ajax 请求,该请求实际上完成了它的工作,但表单也会提交给自己(重新加载页面),因为它没有动作标签,清理您的div#register_msg 的内容,它具有您的 ajax 调用的 PHP 响应。
只需从HTML中删除FORM标签,一切都会好起来的。
取消按钮的默认操作,以便表单不会提交。
$('#reg_register').click(function( event ){
event.preventDefault();
/* rest of your code */
});
相关文章:
- AJAX:$_GET不返回任何值
- 表单未使用 MVC 提交任何值 Asp.Net
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 为什么当订阅两次rx 2.3中的observable时,第二次订阅没有收到任何值
- WebKitBrowser.StringByEvaluatingJavaScriptFromString 不返回任何值
- 类型错误:布尔值不是 Angular 中登录函数的函数
- Highstock,错误:未捕获的类型错误:w[(中间值)(中间值)(中间值)]不是构造函数
- JavaScript:格式化输入方法会给出错误的值
- Object.defineProperty获取集返回错误的值
- 下拉列表中的选定索引在未选择任何值时引发错误
- 日期-时间范围指令字段未显示任何值
- Javascript函数不返回任何值
- ng重复不显示任何值
- Ng模型重写我在AngularJS的输入字段中输入的任何值
- 将“;d”;chrome中Snap.svg错误的值
- 如何检查NaN错误的值
- 无限循环当观察父对象时,观察者不更新任何值
- Ajax 注册不返回任何值或错误