1

HTMLコードでJQUERYAJAXコードを作成します。

$.ajax({
                type: "POST",
                url:  "runrep.py",
                data:
                {
                       'my_data' : 'test' 
                },
                success: function(html)
                {
                }
                error:function(xhr,err)
                {
                     alert("Failed\nreadyState: "+xhr.readyState+"\nstatus: "+xhr.status + "\nresponseText: "+xhr.responseText);
                }
});

私のバックエンドコード「runrep.py」では、ダウンしているMySQLDBに接続しようとしています。

Apache error_logsでプログラムを実行すると、DBがMySQL例外に接続できないことがわかりますが、UIページでエラーが発生しませんか?

class SampleClass:
        def __init__(self):
                self.conn = MySQLdb.connect(host="host",user="user",passwd="passwd",db="db")
                self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
                form = cgi.FieldStorage()
                self.my_data = form["my_data"].value

例外、ブラウザ/クライアント側の実行時の問題によるエラーのいずれかで、プログラムの障害を出力できるようにするにはどうすればよいですか?例外をキャッチした場合でも、それに応じてAJAX呼び出しに失敗を返すにはどうすればよいですか?

4

1 に答える 1

0

基本的に、コードで例外を処理し、サーバーコードに渡す必要があります。たとえば、Werkzeug / Flaskを使用している場合(ドキュメントを参照)、次のように実行できます。

import werkzeug

class SampleClass:
    def __init__(self):
        try:
            self.conn = MySQLdb.connect(host="host",user="user",passwd="passwd",db="db")
        except Exception as e:
            raise werkzeug.exceptions.HTTPException("Error: %s" % str(e) )

        self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
        form = cgi.FieldStorage()
        self.starttime = form["my_data"].value

発生した例外は、サーバーフレームワークによって、500などのエラーを表すHTTPステータスコードを含む適切なHTTP応答に変換される必要があります。エラーのあるコードがサーバーによって応答された場合、AJAXクエリで処理できます。

例外処理とエラーステータスコードによる応答の詳細については、HTTP/WSGIフレームワークを参照してください。

于 2012-06-01T09:46:08.740 に答える