1

アプリケーションでいくつかのjQueryAJAX呼び出しを使用していますが、500内部サーバーエラーなどのAJAX呼び出し中にエラーが発生することがあります。エラーの根底に到達するために、サーバーにログインして、PHPエラーを提供するエラーログを確認します。

これらのエラーが発生したときに通知を受け取る方法と、エラーの原因となったPHPエラーを探しています。少なくとも、ユーザーからメールを受信して​​からログインしてログを確認する代わりに、通知を受け取る方法。

このチュートリアルを確認しましたが、これをAJAXエラーに統合する方法がわかりません:http://net.tutsplus.com/tutorials/php/quick-tip-email-error-logs-to-yourself-with-php/また、これがPHPエラーを返すのか、500内部サーバーエラーだけを返すのかはわかりません。

任意のアイデア、既存のサービス、またはソリューションは大歓迎です!たとえば、私のAJAX呼び出しの1つを次に示します。

$.ajax ({
        url: report,
        cache: false,
        success: function(html) {
            // continue with event
        },
        error: function(x, status, error) {
            // report error here
        },
        async:true
});

編集:

これは、phpエラー通知に対してAJAXリクエストを行う更新されたAJAX呼び出しです...

$.ajax ({
        url: report,
        success: function(html) {
            // success
        },
        error: function(x, status, error) {
            $.ajax ({
                url: 'admin/error_notification.php',
                type: "POST",
                data:{
                    error: error
                }
            });
        },
        async:true
});

これはうまく機能しますが、AJAXエラーの原因となった実際のPHPエラーではなく、内部サーバーエラーが発生したことを報告するだけです。PHPエラー処理ファイルは次のとおりです。

$error = $_POST['error'];
$sysadmin_message = $error;
$sysadmin_to = 'email@example.com';
$sysadmin_subject = 'Error Notification';
$sysadmin_headers = "From: Site <accounts@example.com>\r\n";
$sysadmin_headers .= "MIME-Version: 1.0\r\n";
$sysadmin_headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($sysadmin_to, $sysadmin_subject, $sysadmin_message, $sysadmin_headers);

明らかに、これは報告されたAJAXエラーのみを送信しますが、実際のP​​HPエラーを通知に追加するにはどうすればよいですか?

4

1 に答える 1

3

phpに報告するには、エラー関数内で2回目のajax呼び出しを行う必要があります

フロントエンドから:

$.ajax ({
        url: report,
        cache: false,
        success: function(html) {
            // continue with event
        },
        error: function(x, status, error) {
            // report error here
            $.ajax ({
                url: errorlogUrl,
                data:{
                    message:'ajax error from [report]'
                }
            });
        },
        async:true
});

または、バックエンドでtry/catchステートメントを使用します。

try{
    // code that might throw an error
}
catch(Exception $e){
    // send notification based on the content of $e
}
于 2013-02-27T17:59:38.280 に答える