Django开发服务器不提供来自Ajax请求的错误

Django开发服务器不提供来自Ajax请求的错误,ajax,django,debugging,Ajax,Django,Debugging,我一直在尝试在Django应用程序中使用一些Ajax技术,但这很困难,因为出于某种原因,语法和类型错误并没有导致服务器崩溃,而是悄无声息地失败。这怎么可能 JavaScript(jQuery): 您在哪里查找错误报告?很明显,它不会出现在主网页中,因为您没有请求整页刷新。调试Ajax的最佳方法是通过Firebug,您可以在控制台选项卡中查看—您将看到每个Ajax请求都有一行,如果发生错误,该行将显示为红色。然后,您可以展开该行以查看完整的响应,即尼斯Django回溯,您也可以在新选项卡中打开该回

我一直在尝试在Django应用程序中使用一些Ajax技术,但这很困难,因为出于某种原因,语法和类型错误并没有导致服务器崩溃,而是悄无声息地失败。这怎么可能

JavaScript(jQuery):


您在哪里查找错误报告?很明显,它不会出现在主网页中,因为您没有请求整页刷新。调试Ajax的最佳方法是通过Firebug,您可以在控制台选项卡中查看—您将看到每个Ajax请求都有一行,如果发生错误,该行将显示为红色。然后,您可以展开该行以查看完整的响应,即尼斯Django回溯,您也可以在新选项卡中打开该回溯。

您在哪里查找错误报告?很明显,它不会出现在主网页中,因为您没有请求整页刷新。调试Ajax的最佳方法是通过Firebug,您可以在控制台选项卡中查看—您将看到每个Ajax请求都有一行,如果发生错误,该行将显示为红色。然后,您可以展开该行以查看完整的响应,即尼斯Django回溯,您也可以在新选项卡中打开该回溯。

这可能是因为服务器返回错误代码(500),而jQuery cod不会对错误执行任何操作。您可以发布您正在使用的$.get或$.post代码吗

编辑:如果您使用的是$.load,那么有一个回调函数的位置,您可以创建它来显示错误。非常简单,您需要定义一个类似于以下内容的函数:

function (responseText, textStatus, XMLHttpRequest){
    if (textStatus < 200 || textStatus >= 299){
        $(document).html(responseText);
    }
}
函数(responseText、textStatus、XMLHttpRequest){
如果(textStatus<200 | | textStatus>=299){
$(document).html(responseText);
}
}

这样,您将把错误消息放入整个文档中并查看它。我不知道上面的方法是否有效,因为我无法测试它,但您应该能够构造一些方法来解决这个问题。

这可能是因为服务器返回错误代码(500),而您的jQuery cod不会对错误执行任何操作。您可以发布您正在使用的$.get或$.post代码吗

编辑:如果您使用的是$.load,那么有一个回调函数的位置,您可以创建它来显示错误。非常简单,您需要定义一个类似于以下内容的函数:

function (responseText, textStatus, XMLHttpRequest){
    if (textStatus < 200 || textStatus >= 299){
        $(document).html(responseText);
    }
}
函数(responseText、textStatus、XMLHttpRequest){
如果(textStatus<200 | | textStatus>=299){
$(document).html(responseText);
}
}

这样,您将把错误消息放入整个文档中并查看它。我不知道上面的方法是否有效,因为我无法测试它,但您应该能够构建一些方法来解决这个问题。

对于Ajax错误,Django仍然会生成完整的“调试屏幕”,但它不会自动显示

注册jQuery Ajax错误的全局处理程序,在新窗口中打开“responseText”: (将此代码放入“onready”中)

$(文档).ajaxError(函数(事件、XMLHttpRequest、ajaxOptions、thrownError){ //在新窗口中打开Django调试屏幕: var w=窗口打开(“”,“”,“”); w、 document.write(XMLHttpRequest.responseText); });
这会导致熟悉的Django“debug”页面在ajax错误时弹出。

在ajax错误时,Django仍会生成完整的“debug screen”,但不会自动显示

注册jQuery Ajax错误的全局处理程序,在新窗口中打开“responseText”: (将此代码放入“onready”中)

$(文档).ajaxError(函数(事件、XMLHttpRequest、ajaxOptions、thrownError){ //在新窗口中打开Django调试屏幕: var w=窗口打开(“”,“”,“”); w、 document.write(XMLHttpRequest.responseText); });
这会导致熟悉的Django“debug”页面在ajax错误时弹出。

如果使用$.ajax,则有一个错误回调设置,实现起来非常简单:

$.ajax({
  ...
  error: function(XMLHttpRequest, textStatus, errorThrown){
    document.write(XMLHttpRequest.responseText);
  },
  ...
});

如果使用$.ajax,则存在一个错误回调设置,实现起来非常简单:

$.ajax({
  ...
  error: function(XMLHttpRequest, textStatus, errorThrown){
    document.write(XMLHttpRequest.responseText);
  },
  ...
});

发送Ajax请求的javascript代码是什么样子的?用于接受Ajax请求的python代码是什么样子的?如果你试图调试ajax的javascript端,试试:发送ajax请求的javascript代码是什么样子的?用于接受Ajax请求的python代码是什么样子的?您可以更新它并将其发布到您的问题中吗?如果您尝试调试ajax的javascript端,请尝试:我是jQuery新手-我该怎么做?您必须使用$.ajax、$.get、$.post。你能发布它吗?嗯,我通过直接访问URL获得了错误页面,但无论如何我使用了此页面定义的$.load:我相信它使用的是$.get,因为我没有传递任何参数。我如何看待它的输出?我尝试使用alert(div.load(…);但我只是得到了[对象]之类的东西。谢谢你的帮助!我是jQuery新手-我该怎么做?您必须使用$.ajax、$.get、$.post。你能发布它吗?嗯,我通过直接访问URL获得了错误页面,但无论如何我使用了此页面定义的$.load:我相信它使用的是$.get,因为我没有传递任何参数。我如何看待它的输出?我尝试使用alert(div.load(…);但我只是得到了[对象]之类的东西。谢谢你的帮助!
$.ajax({
  ...
  error: function(XMLHttpRequest, textStatus, errorThrown){
    document.write(XMLHttpRequest.responseText);
  },
  ...
});