问题是Codeigniter 3在发生错误时发送HTTP 500状态,因此我无法正确处理它。
我有一个PHP服务器端代码:
function delete($customer_id) {
if ($this->db->query("DELETE "
. "FROM _customer "
. 'WHERE customer_id = ?;', array('customer_id' => $customer_id))) {
return ['result' => 'OK'];
} else {
return ['result' => $this->db->error()];
}
}
而客户端是这样的:
function deleteRow(customer_id) {
if (confirm("Da li ste sigurni da želite da brišete odabranu stavku?")) {
overlay.style.display = 'block';
webservice({
'proc': 'Customer',
'CallbackFunction': function (r) {
overlay.style.display = 'none';
const json = JSON.parse(r["data"]);
if (json.result === "OK") {
select();
} else {
showToast("Greška", json.result, "error").classList.remove("bg-dark");
}
},
'errorCallbackFunction': function (r) {
overlay.style.display = 'none';
if (r && r.error && r.error.message) {
showToast("Greška 468", r.error.message, "error").classList.remove("bg-dark");
} else {
showToast("Greška 468", "Došlo je do greške molim probajte ponovo ili osvežite stranicu.", "error").classList.remove("bg-dark");
}
},
'data': JSON.stringify({
"function": "delete",
"customer_id": customer_id
})
});
}
};
其中webservice只是javascript获取函数的 Package 器。
而错误是:
<p>Error Number: 1451</p><p>Cannot delete or update a parent row: a foreign key constraint fails (`orange`.`_order`, CONSTRAINT `order_customer_customer_id` FOREIGN KEY (`customer_id`) REFERENCES `_customer` (`customer_id`) ON UPDATE CASCADE)</p><p>DELETE FROM _customer WHERE customer_id = 1;</p><p>Filename: D:/aaa/system/database/DB_driver.php</p><p>Line Number: 691</p> </div>
由于HTTP 500的原因,从删除函数返回的语句在php中从来没有发生过。我读过官方文档,但我不明白这是如何工作的...
1条答案
按热度按时间wixjitnu1#
我发现是什么造成了这一点!我完全忘记了,该网站是运行在开发人员模式,在我切换到生产模式错误来通过,因为他们应该!
因此,在index.php中,只需更改:
至