Ajax - Обработка подключения к базе данных - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь подключиться к своей базе данных через PHP, когда мой запрос ajax выполняется (для метода post), но я хочу показать моему пользователю сообщение об ошибке, если он не может подключиться. Я могу показать сообщение об успешном завершении, когда оно подключается, но мне интересно, есть ли способ вручную выбросить блок 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");
    }
  }
});

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

дБконн. 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);
    }
}

1 Ответ

1 голос
/ 10 марта 2020

Чтобы сообщить браузеру, что запрос не был выполнен, вам нужно передать код ответа http, который не является 2xx. Для вашей цели вы можете использовать, например, 503.

http_response_code(503);

Это обеспечит понимание браузером того, что вывод из вызова не является успешным (как это было бы предложено значением по умолчанию этого, то есть 200 ).

После этого оператора вы все равно можете вернуть немного JSON, если хотите, чтобы обмен сообщениями об ошибках велся на уровне PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...