在获取http 500状态时使用javascript提取处理codeigniter 3 db错误

z4iuyo4d  于 2022-12-07  发布在  Java
关注(0)|答案(1)|浏览(128)

问题是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中从来没有发生过。我读过官方文档,但我不明白这是如何工作的...

wixjitnu

wixjitnu1#

我发现是什么造成了这一点!我完全忘记了,该网站是运行在开发人员模式,在我切换到生产模式错误来通过,因为他们应该!
因此,在index.php中,只需更改:

define('ENVIRONMENT', 'development');

define('ENVIRONMENT', 'production');

相关问题