jQuery ajax json - 查看返回的错误数据

时间:2014-08-21 15:30:05

标签: javascript jquery python ajax json

我在客户端/服务器环境中广泛使用jQuery $.ajax({dataType: 'json'}),它工作得很好......当它运行良好时。问题是,当服务器出现故障时,它不会以json格式返回错误消息(我使用带有cgitb的python)。我想做的是为dataType: 'json'函数保留success:,但为error:函数获取原始文本或html - 有没有办法从jQuery获取未解析的服务器响应在data或errorThown部分?

1 个答案:

答案 0 :(得分:0)

问题最终成为了cgitb的reset()功能,旨在“退出”#34;糟糕的HTML情况,搞砸了jQuery解析,以便在jqXHR传递给error时,responseText标记为空。 Safari和Chrome上的错误显示正常,但它实际上是非常糟糕的HTML。我最终替换了cgitb中的一些函数并使用了cgitb.handle()函数而不是调用cgitb.enable。这是一些代码:

import sys
import cgitb

def noRest():
    return "Content-Type: text/html\n\n<html>\n"
cgitb.reset = noRest
oldhtml = cgitb.html
def newHTML((etype, evalue, etb), context=5):
    x = oldhtml((etype, evalue, etb), context)
    return x + "\n</body></html>\n"
cgitb.html = newHTML

try:
     [ main script here ]
except Exception as e:
     cgitb.handler(sys.exc_info())

然后$.ajax({ })例程可以单独处理,error: function(xhr) { }处理xhr.responseText