當(dāng)我的 ajax 請(qǐng)求正在執(zhí)行時(shí)(對(duì)于 post 方法),我試圖通過(guò) PHP 連接到我的數(shù)據(jù)庫(kù),但是如果無(wú)法連接,我想向我的用戶顯示一條錯(cuò)誤消息。我可以在連接時(shí)顯示成功消息,但我想知道是否有辦法手動(dòng)拋出 catch 塊,以便我知道我的代碼正在運(yùn)行,如果用戶無(wú)法連接到,則會(huì)向用戶顯示一條消息數(shù)據(jù)庫(kù)(目前使用 console.log 進(jìn)行測(cè)試)。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"); } }});測(cè)試.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貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
為了通知瀏覽器請(qǐng)求沒(méi)有成功,需要傳遞一個(gè)不是2xx的http響應(yīng)碼。出于您的目的,您可以使用例如 503。
http_response_code(503);
這將確保瀏覽器理解調(diào)用的輸出不是成功的(因?yàn)樗哪J(rèn)值會(huì)暗示它,即 200)。
在該語(yǔ)句之后,如果您希望錯(cuò)誤消息由 PHP 層驅(qū)動(dòng),您仍然可以返回一些 JSON。
- 1 回答
- 0 關(guān)注
- 158 瀏覽
添加回答
舉報(bào)
0/150
提交
取消