1

我在我的 HTML 代码中创建了一个 JQUERY AJAX 代码:

$.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”中,我专门尝试连接到已关闭的 MySQL 数据库。

当我在 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

引发的异常应该由服务器框架转换为适当的 HTTP 响应,其中包含一些表示错误的 HTTP 状态代码,例如 500。当服务器响应错误代码时,您可以在 AJAX 查询中处理它。

有关异常处理和带有错误状态代码的响应的更多信息,请参阅您的 HTTP/WSGI 框架。

于 2012-06-01T09:46:08.740 回答