gpt4 book ai didi

php - 如何将错误消息从一个 php 文件检索到另一个 php 文件?

转载 作者:行者123 更新时间:2023-11-30 22:14:58 24 4
gpt4 key购买 nike

我是 ajax 新手,这是我第一次尝试使用它。

我想做的是创建一个小系统,在不更新页面的情况下向数据库注册电子邮件和密码,而且它工作得很好!

但是,正如您会在我的“register.php”文件中注意到的那样,有一个条件不允许重复的电子邮件,以及 PDOException 以防止错误......所以,我如何发送消息(警报或无论如何)到我的索引页面以防它们发生?

这是我的 .js 文件:

$(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());
}

?>

最佳答案

通常,您的 PHP 文件会返回指示注册成功或失败的响应。

在您的 PHP 文件中,当出现错误时,您应该返回一个包含错误消息的 json 编码数组,而不是 die,例如:

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)); .这样一来,您就可以确定请求实际上已经完成了预期的操作,而不是因为其他(坏的)原因返回了空白页。

注意:如果您在使用它时遇到问题,您可能需要将 dataType: 'json' 添加到您的 ajax 选项中(在 type: 'post' 下)

关于php - 如何将错误消息从一个 php 文件检索到另一个 php 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com