如何将Python异常信息返回到jQuery.ajax POST调用?

如何将Python异常信息返回到jQuery.ajax POST调用?,jquery,python,ajax,Jquery,Python,Ajax,我在HTML代码中编写了一个JQUERY AJAX代码: $.ajax({ type: "POST", url: "runrep.py", data: { 'my_data' : 'test' }, success: function(html)

我在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错误日志中运行程序时,我看到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调用?

基本上,您应该在代码中处理异常并将其传递给服务器代码。例如,如果您使用的是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框架