为了账号安全,请及时绑定邮箱和手机立即绑定

Ajax - 数据库连接处理

Ajax - 数据库连接处理

PHP
慕侠2389804 2022-10-28 09:28:54
当我的 ajax 请求正在执行时(对于 post 方法),我试图通过 PHP 连接到我的数据库,但是如果无法连接,我想向我的用户显示一条错误消息。我可以在连接时显示成功消息,但我想知道是否有办法手动抛出 catch 块,以便我知道我的代码正在运行,如果用户无法连接到,则会向用户显示一条消息数据库(目前使用 console.log 进行测试)。JS$.ajax({  type: "post",  url: "test.php",  dataType: "json",  error: function(data) {    console.log(data.status);    console.log("Not Successful Test");    if (data.status == "connectionError") {      console.log("Didn't connect to database");    } else {      console.log("Other");    }  },  success: function(data) {    console.log(data.status);    console.log("Successful Test");    if (data.status == "success") {      console.log("Connected to Database");    } else {      console.log("Other");    }  }});测试.phptry {    require_once("dbConn.php");    $dbConn = getConnection();    $response_array["status"] = "success";} catch (Exception $e) {    $response_array["status"] = "connectionError"; // Want to display this response in JS code}header("Content-type: application/json");echo json_encode($response_array);dbConn.phpfunction getConnection(){    try {        $conn = new PDO(            "localhost=localhost;dbname=dbname",            "username",            "password"        );        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);        return $conn;    } catch (Exception $e) {        throw new Exception("Connection error " . $e->getMessage(), 0, $e);    }}解决方案 test.phptry {    require_once("dbConn.php");    $dbConn = getConnection();    $response_array["status"] = "success";} catch (Exception $e) {    // Added http response code then die() with message    http_response_code(503);    die("<b>Server Error.</b><br/> This service is currently unavailable. Please try again at a later time.");}header("Content-type: application/json");echo json_encode($response_array);
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

为了通知浏览器请求没有成功,需要传递一个不是2xx的http响应码。出于您的目的,您可以使用例如 503。

http_response_code(503);

这将确保浏览器理解调用的输出不是成功的(因为它的默认值会暗示它,即 200)。

在该语句之后,如果您希望错误消息由 PHP 层驱动,您仍然可以返回一些 JSON。


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信