【发布时间】:2014-08-21 15:30:05
【问题描述】:
我在客户端/服务器环境中广泛使用 jQuery $.ajax({dataType: 'json'}),它运行良好......当它运行良好时。问题是,当服务器出现故障时,它不会以 json 格式返回错误消息(我正在使用带有 cgitb 的 python)。我想做的是为success:函数保留dataType: 'json',但为error:函数获取原始文本或html——有没有办法在数据或errorThown中从jQuery获取未解析的服务器响应部分?
【问题讨论】:
-
一种解决方案是简单地删除
dataType: 'json'并设置正确的内容类型响应标头。设置正确的标头后,jQuery 仍会自动解析 JSON。 -
您也可以使用
complete处理程序而不是success。 Complete 收到( jqXHR jqXHR, String textStatus ),其中jqHXR.responseText应该会给你原始响应。 -
是否有可能将查询错误地识别为
success:,即使它返回为非JSON?我不想在每个success: function()处理程序中编写检查器来检查数据是否以 JSON 格式返回。但是这个,或者 Nikhil 的建议可能是要走的路。 -
您还应该考虑配置您的服务器以在出现错误时发回非 200 响应代码。
-
Mike -- 在生产环境中,肯定的;在测试环境中,我只是使用 Python 的 CGIHTTPServer,不幸的是,它在加载脚本后立即返回 200 OK。
标签: javascript jquery python ajax json