php - php返回true或false后在javascript中继续
问题描述
我需要一些帮助。我尝试进行注册,因为我只需要刷新页面上的注册部分,我必须使用 ajax。这就是问题所在。当我提交表单时,ajax 会加载不同的文件,php 中的注册部分在哪里。在 php 中,我有一些变量,如果出现错误,我用它们来更改特定输入的颜色。但是,因为 php 在其他文件中,所以我无法从 ajax 所在的文件中访问变量并更改颜色。如果我尝试在 php 所在的文件中放置更改颜色的脚本,它不会执行,因为我在某个地方停止了 php,例如“return false”。
你知道吗,我能用这个做什么?非常感谢你,对不起我的英语不好。
这是ajax部分
<script>
$(document).ready(function(){
$("#registerUser").submit(function(event){
event.preventDefault();
var typedEmail = $("#registerEmail").val(),
typedPassword = $("#registerPassword").val(),
typedRepeatedPassword = $("#registerRepeatedPassword").val();
submittedForm = $("#registerSubmit").val();
$("#registerMessage").load("accountRegistration.php", {
email: typedEmail,
password: typedPassword,
repeatedPassword: typedRepeatedPassword,
submit: submittedForm
});
});
});
</script>
这是php文件
if(isset($_POST["submit"])){
require_once "autoload.php";
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$password = $_POST["password"];
$repeatedPassword = $_POST["repeatedPassword"];
$emailError = false;
$passwordError = false;
$repeatedPasswordError = false;
if(empty($email)){
$emailError = true;
}
if(empty($password)){
$passwordError = true;
}
if(empty($repeatedPassword)){
$repeatedPasswordError = true;
}
if(strlen($password) < 8){
$passwordError = true;
}
if($password != $repeatedPassword){
$repeatedPasswordError = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$emailError = true;
}
if($emailError == true || $passwordError == true || $repeatedPasswordError == true){
echo("<span class='errorMessage'>Vyplňte správně všechna políčka!</span>");
return false;
}
$registration = new DatabaseOperations;
if($registration->selectOneRow("users", "userID", "email", $email, PDO::PARAM_STR)){
echo("<span class='errorMessage'>Tento email už někdo používá.</span>");
return false;
}
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
if($registration->insertOneRow("users", array("email", "password"), array($email, $passwordHash))){
echo("<span class='successMessage'>Registrace proběhla úspěšně.</span>");
return true;
} else{
echo("<span class='errorMessage'>Něco se pokazilo. Zkuste to prosím znovu.</span>");
return false;
}
} else{
echo ("Stala se chyba. Zkuste to prosím znovu.");
}
<script>
$("#registerEmail, #registerPassword, #registerRepeatedPassword").removeClass("inputError");
var emailError = "<?php echo(isset($emailError) ? $emailError : '') ?>";
var passwordError = "<?php echo(isset($registerPassword) ? $registerPassword : '') ?>";
var repeatedPasswordError = "<?php echo(isset($registerRepeatedPassword) ? $registerRepeatedPassword : '') ?>";
console.log(emailError);
console.log(passwordError);
console.log(repeatedPasswordError);
if(emailError == true){
$("#registerEmail").addClass("inputError");
}
if(passwordError == true){
$("#registerPassword").addClass("inputError");
}
if(repeatedPasswordError == true){
$("#registerRepeatedPassword").addClass("inputError");
}
if(passwordError == true || repeatedPasswordError == true){
$("#registerPassword").val("");
$("#registerRepeatedPassword").val("");
}
</script>
这是HTML
<div class="signUp">
<h1>registrace</h1>
<form method='POST' name="register" id="registerUser">
<p id="registerMessage"></p>
<input type='email' id='registerEmail' name='email' placeholder='Váš email'>
<input type='password' id='registerPassword' name='password' placeholder='Vaše heslo (min. 8 znaků)'>
<input type='password' id='registerRepeatedPassword' name='repeatedPassword' placeholder='Ověření hesla'>
<input type='submit' id='registerSubmit' name='' value='REGISTROVAT'>
</form>
<p>MÁM ÚČET A <a href="#null" class="changeForm">CHCI SE PŘIHLÁSIT</a><p>
</div>
解决方案
最后,我这样做了..
<script>
$(document).ready(function(){
$("#registerUser").submit(function(event){
event.preventDefault();
var typedEmail = $("#registerEmail").val(),
typedPassword = $("#registerPassword").val(),
typedRepeatedPassword = $("#registerRepeatedPassword").val();
submittedForm = $("#registerSubmit").val();
$.ajax({
method: "POST",
url: "accountRegistration.php",
data: {
email: typedEmail,
password: typedPassword,
repeatedPassword: typedRepeatedPassword,
submit: submittedForm
},
dataType: "json",
success: function(results){
$("#registerMessage").html(results["message"]);
$("#registerEmail, #registerPassword, #registerRepeatedPassword").removeClass("inputError");
var emailError = results["emailError"];
var passwordError = results["passwordError"];
var repeatedPasswordError = results["repeatedPasswordError"];
if(emailError == true){
$("#registerEmail").addClass("inputError");
}
if(passwordError == true){
$("#registerPassword").addClass("inputError");
}
if(repeatedPasswordError == true){
$("#registerRepeatedPassword").addClass("inputError");
}
if(passwordError == true || repeatedPasswordError == true){
$("#registerPassword").val("");
$("#registerRepeatedPassword").val("");
}
}
});
});
});
</script>
<?php
if(isset($_POST["submit"])){
registerUser();
}
function registerUser(){
require_once "autoload.php";
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$password = $_POST["password"];
$repeatedPassword = $_POST["repeatedPassword"];
$emailError = false;
$passwordError = false;
$repeatedPasswordError = false;
if(empty($email)){
$emailError = true;
}
if(empty($password)){
$passwordError = true;
}
if(empty($repeatedPassword)){
$repeatedPasswordError = true;
}
if(strlen($password) < 8){
$passwordError = true;
}
if($password != $repeatedPassword){
$repeatedPasswordError = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$emailError = true;
}
if($emailError == true || $passwordError == true || $repeatedPasswordError == true){
echo (json_encode(
array("emailError" => $emailError,
"passwordError" => $passwordError,
"repeatedPasswordError" => $repeatedPasswordError,
"message" => "<span class='errorMessage'>Vyplňte správně všechna políčka!</span>"
)));
return false;
}
$registration = new DatabaseOperations;
if($registration->selectOneRow("users", "userID", "email", $email, PDO::PARAM_STR)){
echo(json_encode(array("message" => "<span class='errorMessage'>Tento email už někdo používá.</span>")));
return false;
}
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
if($registration->insertOneRow("users", array("email", "password"), array($email, $passwordHash))){
echo(json_encode(array("message" => "<span class='successMessage'>Registrace proběhla úspěšně.</span>")));
return true;
} else{
echo(json_encode(array("message" => "<span class='errorMessage'>Něco se pokazilo. Zkuste to prosím znovu.</span>")));
return false;
}
}
?>
推荐阅读
- python - 打开多个插图面板在 matplotlib 中不起作用
- javascript - 为什么选择字段会触发自动完成功能?
- c# - 使用存储过程生成excel文件
- amazon-web-services - 如果我不使用默认 vpc,如何通过 ssh 连接到我的 ec2
- java - Glassfish 请求压缩
- javascript - 你如何多次匹配一个正则表达式组?
- mysql - 用于报告的 SQL 表设计
- reactjs - 使用 HOC 以编程方式添加元素
- css - Bootstrap : 在 div 之间添加一个连接
- java - 如何从 javafx 中的另一个线程重新打开关闭的阶段