2011-10-18 6 views
0

デバッグを簡単にするために、すべてのエラーや警告などを収集し、データベースクエリをログに記録し、ページの最後に表示するPHPコードにエラーハンドラを導入しました。管理者はサイトにログインします。PHPでajaxスクリプトのエラーをキャッチ

私はajaxクエリで同様のことをしたいと思います。さらに一般的には、2つのエラーパネルを統合したいと思いますが、私はそれを行うための良い方法を失っています。

私が欲しいものの大まかなアイデアは、非同期スクリプトのエラーを含むページにエラーがあるポップアップパネルです。

私はすでにポップアップパネルを作成し、ajaxリクエストからのデータでそれらを埋めています。

私は、エラーウィンドウに彗星パターンを使用し、何らかの形でウィンドウにエラーを渡すhttp要求を送信するPHPで終了ハンドラを登録することを考えましたが、これを行う方法についてはあまりよく分かりません。どのようにPHPセッションに結び付けるか(ユーザーが他のエラーを見ないように)

どのようにすればいいのでしょうか?私は見落としている何か簡単ですか?

+0

Firephp? 151515 –

+0

@Halilözgürは動作可能かもしれませんが、火薬瓶がインストールされていない多くのコンピュータで管理されます。私はそれを修正する必要がありますが、ユーザーが問題を抱えていてエラーメッセージが必要な場合は、Firebugのインストールを要求することはできません。 –

答えて

0

[OK]を、私がやってしまった、かなりうまく動作するように思われるものは以下のとおりです。

は、私はページ上のすべてのエラーを収集し、クラス=「はSystemError」と特別にフォーマットのdivを出力PHP関数を書きました。それは呼び出されたファイル名のヘッダとエラーリストを含むdivを含んでいます。この関数は "xx_error_get($ filename)"と呼ばれることができます

次に、各文字列に結果の一部としてこの文字列を返すようにしました。私がしたのは、返されたXMLオブジェクトの最後に

echo xx_error_get(__FILE__); 

の呼び出しを追加することでした。

は戻る私のメインページのPHPで、私はjQueryので$(ドキュメント).readyハンドラに数行を追加=「systemTemp」その後、

IDを持つ私の体に隠されたdiv要素を追加しました

$(document).ajaxSuccess(function(e, xhr, settings) { 
        $("#systemTemp").html(xhr.responseText); 
        $("#systemError").prepend($("#systemTemp").children(".systemError").html()); 
        $(".systemError").remove(); 
        $("#systemTemp").empty(); 
        $("#systemError").accordion("destroy"); 
        $("#systemError").accordion({autoHeight:false});    
    }); 

必ずしも最もクリーンなコードではありませんが、これは誰にとっても役立つことを願っています。

+0

私は追加する必要があります:ajax呼び出しは、最終的には、クリーンアップする必要があります。現在、スクリプトは生のhtmlを出力します。私はそれが常にJSONオブジェクトを返すように変更するつもりです。 ajaxSuccessハンドラは、返されたJSONオブジェクトのエラー部分を読み取ってアコーディオンに追加します。これ以上のtemp divやセレクタはありません。主な問題を解決したにもかかわらず、スクリプトはそのままです。 –

関連する問題