繁体   English   中英

使用JQuery处理PHP运行时错误/通知/警告的最佳方法

[英]Best way to handle PHP runtime errors/notices/warnings with JQuery

我知道问题的标题不是很客观,但是很难解释我的情况。 问题是,我想创建一种方法来处理$.post调用中的所有可能的错误,以便在给定情况下向用户提供正确的消息。

我有一些函数返回JSON对象。 如果在我的应用程序中引发错误,则会生成状态代码500,从而使我很容易捕获和处理此错误。 但是,如果发生运行时错误(例如,尝试在空对象上执行方法),则PHP不会引发500错误,它只会显示一条错误消息,给出200状态并进行执行。 我尝试模拟此错误,以查看如何最好地处理它,但是我没有主意。

我有以下代码:

$(function() {
$('#update_marker').submit(function(e) {
    e.preventDefault();
    $.post($("#update_marker").attr("action"), $("#update_marker").serialize(), function(data, textStatus, jqXHR) {
        var json = $.parseJSON( data );
        if( json.status=="success" ) {
            new Messi( json.msg );
        } else {
            new Messi( json.msg, {title: 'Ops..', titleClass: 'anim error', buttons: [{id: 0, label: 'Fechar', val: 'X'}]});
        }
    }).fail( function(jqXHR, textStatus, errorThrown) { general_error(); } );
    return false;
});
});

因此,在我的调用方法中,我放入了一些代码,例如$nullobj->method(); 只是为了模拟意外故障。 我得到的是下面的结果,状态码为200(确定)。

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined variable: nullobj</p>
<p>Filename: controllers/map.php</p>
<p>Line Number: 140</p>

</div><br />
<b>Fatal error</b>:  Call to a member function method() on a non-object in <b>D:\xampp\htdocs\xumb\application\controllers\map.php</b> on line <b>140</b><br />

这将导致我的jQuery代码将其视为成功,并且无法解析JSON对象,因此不会向用户显示任何内容。 在某些情况下,执行甚至不会在错误处停止,并且返回的JSON将在那里,但是在页面底部,无法访问。 我可以检查返回的对象是否为JSON,但还不止如此-我认为。

您可以创建自己的PHP错误处理程序。 然后,您可以在出现某些错误或任何错误时返回状态500。 看到这篇文章: 遇到致命异常时,如何使php返回500?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM