Ajax - 数据库连接处理

当我的 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");

    }

  }

});

测试.php


try {

    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.php


function 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.php


try {

    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);



慕侠2389804
浏览 91回答 1
1回答

陪伴而非守候

为了通知浏览器请求没有成功,需要传递一个不是2xx的http响应码。出于您的目的,您可以使用例如 503。http_response_code(503);这将确保浏览器理解调用的输出不是成功的(因为它的默认值会暗示它,即 200)。在该语句之后,如果您希望错误消息由 PHP 层驱动,您仍然可以返回一些 JSON。
打开App,查看更多内容
随时随地看视频慕课网APP