通常,当我从ajax调用中获得500内部服务器错误时,我无法看到响应的详细信息(因为您不希望向用户显示它们)。在服务器端,我只看到像"GET /xxx/yyy/ HTTP/1.1" 500 1150336
这样的行。
不修改我的客户端代码(即.html / js),除非更改是最小的并且一劳永逸,否则我可以使用任何方便的工具或技巧来查看AJAX响应的详细信息(从客户端还是服务器端或两者都有?)
使用像WireShark这样的数据包捕获程序不是一个选项,因为它不能简化我的调试过程,因此不方便。
请注意,客户端和服务器都在同一台计算机上运行。
感谢。
答案 0 :(得分:15)
真棒!我刚刚意识到Chrome还实现了呈现的响应。
答案 1 :(得分:3)
基本python logging?出了什么问题您可以将视图设置为记录为请求,响应和任何异常。
如果你想获得一个很好的前端来管理和查看异常,你可以使用django-sentry。
编辑:我认为您需要更具体地说明是否要调试前端或后端代码。理想情况下,你需要两者,虽然我的答案是基于后端调试(以确定500的),其他都是前端调试的好建议。
答案 2 :(得分:2)
使用FireBug或Chrome开发者工具。两者都允许您检查请求和对心脏内容的响应,以及更多内容。
答案 3 :(得分:1)
这是一个相当古老的问题,但是当我看到它作为参考并且有一个稍微不同的解决方案时,我想我也可以加上我的两分钱。
我使用python manage.py runserver_plus,它附带了django扩展,并为您提供了一个非常棒的调试器,能够在堆栈跟踪的每个级别打开一个shell,并且局部变量保持不变。这里的问题是,在ajax调用中,即使在预览窗口中,界面也没有正确显示。我的解决方案是找到调用javascript代码,并出错
$.ajax({
url : window.location.pathname,
type : "POST",
dataType: "json",
data : dataPacket,
success : function(json) {
alert('it worked!');
},
error : function(xhr,errmsg,err) {
if(xhr.status == 500){
document.open();
document.write(xhr.responseText);
document.close();
}
});
这会导致完整堆栈跟踪替换当前窗口。 快乐的调试!
答案 4 :(得分:-3)
Fiddler是你的朋友。
学习它,使用它,喜欢它。