如何将错误消息从一个php文件检索到另一个php文件?
我是ajax新手,这是我第一次尝试使用它 我正在尝试做的是创建一个小系统,在不更新页面的情况下向数据库注册电子邮件和密码,它工作得很好 但是,正如您在我的“register.php”文件中所注意到的,有一个条件是不允许重复的电子邮件,还有一个条件是防止出现错误……那么,如果发生任何错误,我如何向我的索引页发送消息(警报或其他信息) 这是我的.js文件:如何将错误消息从一个php文件检索到另一个php文件?,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我是ajax新手,这是我第一次尝试使用它 我正在尝试做的是创建一个小系统,在不更新页面的情况下向数据库注册电子邮件和密码,它工作得很好 但是,正如您在我的“register.php”文件中所注意到的,有一个条件是不允许重复的电子邮件,还有一个条件是防止出现错误……那么,如果发生任何错误,我如何向我的索引页发送消息(警报或其他信息) 这是我的.js文件: $(document).ready(function(){ $("#btnRegister").click(function(){
$(document).ready(function(){
$("#btnRegister").click(function(){
$.ajax({
type: 'post',
url: 'register.php',
data: { txtEmail: $("#frmEmail").val(), txtPassword: $("#frmPassword").val() }
}).done(function(){
$("#frmEmail").val('');
$("#frmPassword").val('');
$("#frmEmail").focus();
});
});
});
我的“register.php”文件:
<?php
try
{
$handler = new PDO('mysql:host=127.0.0.1;dbname=register', 'root', '');
$handler -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$email = $_POST['txtEmail'];
$password = $_POST['txtPassword'];
$sql = "SELECT email FROM users WHERE email = ?";
$query = $handler -> prepare($sql);
$query -> bindValue(1, $email);
$query -> execute();
if(($query -> rowCount()) != 0)
die("Error: the inserted email already exists.");
else
{
$sql = "INSERT INTO users (email, pass) VALUES (?, ?)";
$query = $handler -> prepare($sql);
$query -> bindValue(1, $email);
$query -> bindValue(2, $password);
$query -> execute();
}
}
catch(PDOException $ex)
{
die("Error: " . $ex -> getMessage());
}
?>
您只需更改所有
模具()代码>至echo”“代码>因此,它不会终止PHP部分,而是返回指向索引文件的消息。接下来,只需将jQuery脚本更改为:
$(document).ready(function(){
$("#btnRegister").click(function(){
$.ajax({
type: 'post',
url: 'register.php',
data: { txtEmail: $("#frmEmail").val(), txtPassword: $("#frmPassword").val() }
}).done(function(msg){
if(msg != ''){
alert(msg);
}
$("#frmEmail").val('');
$("#frmPassword").val('');
$("#frmEmail").focus();
});
});
});
您所需要做的就是更改所有的die()代码>至echo”“代码>因此,它不会终止PHP部分,而是返回指向索引文件的消息。接下来,只需将jQuery脚本更改为:
$(document).ready(function(){
$("#btnRegister").click(function(){
$.ajax({
type: 'post',
url: 'register.php',
data: { txtEmail: $("#frmEmail").val(), txtPassword: $("#frmPassword").val() }
}).done(function(msg){
if(msg != ''){
alert(msg);
}
$("#frmEmail").val('');
$("#frmPassword").val('');
$("#frmEmail").focus();
});
});
});
通常,PHP文件会返回一个响应,指示注册的成功或失败
在PHP文件中,当出现错误时,您应该返回包含错误消息的json编码数组,而不是die
ing,例如:
if(($query -> rowCount()) != 0)
echo json_encode(array('error' => "Error: the inserted email already exists."));
exit;
else
然后在javascript的done
函数中,您可以检查以下消息:
}).done(function(data){
if (data.error) {
alert(data.error); // or do something else
} else {
// every thing looks ok, do your thing
}
});
我建议总是从php返回一些东西,不管是上面提到的错误消息,还是简单地json_encode(array('success'=>true))代码>。这样,您就可以确保请求实际完成了预期的操作,并且不会因为其他(不好的)原因返回空白页
注意:如果您在实现此功能时遇到问题,可能需要将数据类型:“json”
添加到ajax选项中(在类型:“post”
下)通常,PHP文件会返回一个指示注册成功或失败的响应
在PHP文件中,当出现错误时,您应该返回包含错误消息的json编码数组,而不是die
ing,例如:
if(($query -> rowCount()) != 0)
echo json_encode(array('error' => "Error: the inserted email already exists."));
exit;
else
然后在javascript的done
函数中,您可以检查以下消息:
}).done(function(data){
if (data.error) {
alert(data.error); // or do something else
} else {
// every thing looks ok, do your thing
}
});
我建议总是从php返回一些东西,不管是上面提到的错误消息,还是简单地json_encode(array('success'=>true))代码>。这样,您就可以确保请求实际完成了预期的操作,并且不会因为其他(不好的)原因返回空白页
注意:如果您在实现此功能时遇到问题,可能需要将数据类型:“json”
添加到ajax选项中(在类型:“post”
下)哈哈!比我想象的容易多了!谢谢,icecub的回答也很有帮助!它现在可以工作了,我之所以使用“die”函数是因为我将用户发送到另一个页面,所以我想“这可能是学习ajax的好机会”,我看到我也将学习一些JSON…哈哈!比我想象的容易多了!谢谢,icecub的回答也很有帮助!它现在可以工作了,我之所以使用“die”函数是因为我将用户发送到另一个页面,所以我想“这可能是学习ajax的好机会”,我知道我也将学习一些JSON。。。