【发布时间】:2015-04-01 20:26:30
【问题描述】:
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
...
...
<form id="validate_mail" action="/wp-content/custom-php/validate_mail.php" method="POST">
<input name="mail_name" type="text" value="" />
<input type="submit" value="submit" />
</form>
<div id="validate_mail_result"></div> // placeholder for html code that is returned
<script> // main script
var form=$('#validate_mail');
form.submit(function(ev){
$.ajax({
type : form.attr('method'),
url : form.attr('action'),
data : form.serialize(),
success : function(result{
$('#validate_mail_result').html(result);
}
});
ev.preventDefault();
});
</script>
PHP(由主脚本调用)
<?php
...
...
// Connect to MySQL
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$connection = new mysqli($servername,$username,$password);
if (mysqli_connect_errno()){
printf("MyErrorMsg: %s\n", mysqli_connect_error());
exit();
}
// Perform request
$mail_name = $_POST[mail_name];
$full_mail_name = $mail_name . "@mydomain.me";
$connection->select_db("MAILSERVER");
$queryMailExists = "SELECT id FROM users WHERE mailname = '" . $mail_name . "'";
$resultMailExists = $connection->query($queryMailExists);
$row_cnt = $resultMailExists->num_rows;
$connection->close();
if (is_valid_email_address_5321($full_mail_name)==0){
echo "Not a valid email-address according to RFC5321";
}elseif(row_cnt==0){ //check if email name allready taken
echo "Mail available";
echo "
<form id=\"purchase_mail\" action=\"/wp-content/custom-php/purchase_mail.php\" method=\"POST\">
<input id=\"password\" style=\"width: 280px;\" name=\"password\" type=\"password\" value=\"\" />
<div id=pswrd_struct_chk></div>
<input id=\"password_retyped\" style=\"width: 280px;\" name=\"password_retyped\" type=\"password\" value=\"\" />
<div id=pswrd_match_chk></div>
<script> // this script and the one after this are blocking the main script
var form=$('#purchase_mail');
$('#password').keyup(function(ev){
$.ajax({
type : form.attr('method'),
url : \"/wp-content/custom-php/password_structure_check.php\",//just checks if the password strength is weak/acceptable/good
data : form.serialize(),
success : function(result){
$('#pswrd_struct_chk').html(result);
}
});
$('#password_retyped').val(\"\");
$('#pswrd_match_chk').html(\"\");
});
</script>
<script>
var form=$('#purchase_mail');
$('#password_retyped').keyup(function(ev){
$.ajax({
type : form.attr('method'),
url : \"/wp-content/custom-php/password_match_check.php\",
data : form.serialize(),
success : function(result){
$('#pswrd_match_chk').html(result);
}
});
});
</script>
<input type=\"submit\" value=\"PAY\" />
";
}else{
echo "<div>Mailname allready taken!</div>";
}
?>
当我注释掉最后两个脚本时,一切都按预期工作。 PHP 中的 3 个不同的if-case 确实将它们的 html 代码回显到占位符中,但是当我在执行“elseif(row_cnt==0)”部分后不注释脚本时,主脚本卡住了,我没有得到任何回显其他两个if-case 无论提交什么(在输入字段中输入id=mail_name)。
我无法通过谷歌搜索我的问题。
感谢您的付出。
【问题讨论】:
-
这似乎是一种验证电子邮件的混乱方式?为什么不创建一个仅检查 DB 的简单 PHP 脚本,并将 javascript 从 getgo 保留在主页上。
-
PHP 响应中缺少
</form>标记是错字吗?success : function(result{的语法似乎也不正确(在 HTML 中)。 -
row_cnt需要$... 这是一个 PHP 脚本,对吗?你有没有看过你的错误日志?他们会提到这个...... :-D -
“当我注释掉最后两个脚本时,一切都按预期工作” 很难弄清楚最后两个脚本是什么意思。
-
好消息,您的代码在我的本地服务器上运行良好。只需修复一些可能导致您的代码卡住的拼写错误。请检查我的答案。
标签: javascript php jquery html ajax