在 Django/Javascript 交互中 POST 没有响应
Posted
技术标签:
【中文标题】在 Django/Javascript 交互中 POST 没有响应【英文标题】:POST without response in Django/Javascript interaction 【发布时间】:2013-07-09 20:29:40 【问题描述】:我有一个愉快的基于 javascript 的客户端,可以与我的 Django 服务器端代码对话。我使用几个 XMLHttpRequest 进行交互,那里一切都很好。现在有一个用户交互,我想在服务器上接收用户发送的信息,但我不需要/不想要响应。
据我了解,Django 所有视图都必须使用 HttpResponse 项进行响应。我可以发回一个空白或 HttpResponseNotModified 响应。但是我收到的任何东西似乎都会提示浏览器端更改为空白屏幕。
我不想更改页面、重新加载或任何事情。只需保留浏览器会话即可。我不需要确认,也不介意某些 POST 发送是否在大量响应中丢失。
我可以做一个 XMLHttpResponse 并捕获响应并忽略它。但我想知道有没有办法解决这个问题。
【问题讨论】:
没有任何代码很难回答这个问题。你能添加有问题的客户端代码吗(假设服务器只会发送一个空响应)? 【参考方案1】:您应该返回一个Http204/No Content
,它告诉浏览器您的服务器已确认并处理了您的请求,但它没有返回任何内容并在您的应用程序中适当地处理(无论您想要什么)。
如果您使用的是 jQuery(例如),那么它会自动转到您的 success
处理程序,如果您无法控制它,那么您已经尽力了。
阅读完整的状态码列表here
【讨论】:
啊-谢谢。由于某种原因没有想到 204,而是专注于 HttpResponse 子类。我在 Django 响应代码列表中没有看到 204 的子类,但很简单:return HttpResponse(status=204) 工作得很好。 :) ...作为补充,我发现了一个不同的 Django 文档页面,其中包含更多响应对象。有兴趣的可以查看this 'extras' page @RossGK 然而,它是名为django-extras
的第 3 方应用程序,不包含在标准 Django 中
是的 - 好点。有趣的是,一些基本的 W3C 响应代码不包含在 django.http 中
嗯,这就是为什么我们有HttpResponse(status=xxx)
。以上是关于在 Django/Javascript 交互中 POST 没有响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VSCode 中调试 Django Javascript?
Django - javascript不会在html页面上加载
Django,Javascript:通过 javascript innerHtml 注入 DOM 的表单在提交时崩溃 google chrome 选项卡。在 IE 中工作
java编码转换过程(转自http://cmsblogs.com/?p=1475)