关于jQuery JSON ajax请求的空请求体

时间:2014-03-27 17:04:08

标签: jquery ajax json django heroku

服务器:在Heroku上运行Django 1.4。所有请求都是HTTPS。

我的ajax电话看起来像这样:

var data = {
  username: form.find('input[name="username"]').val(),
  email: form.find('input[name="email"]').val()
};
$.ajax({
  url: '/register',
  type: 'POST',
  data: JSON.stringify(data),
  contentType: 'application/json',
  dataType: 'text',
  headers: {
    'X-CSRFToken': $.cookie('csrftoken')
  }
});

有时,解析服务器上的请求正文失败,因为request.body完全为空。这是相当罕见的,但由于我在许多页面上使用这个成语,我每周都会看到它几次。可能约占这些请求的2-5%。

CSRF令牌标题与其余标题一起存在,因此看起来只有正文本身丢失。在最近的一个请求中,我注意到了一个CONTENT_LENGTH 2标头,它太短而无法包含真实的请求数据。我想知道在哪里添加了。

我希望有一些帮助调试这个。我无法看到JSON.stringify调用返回空字符串的任何方法。这合理吗?如果是这样的话,那么请求主体要么在飞行中被剥离,要么在我的Django应用程序中正在执行它。

任何帮助调试或如何重现这一点的想法都是最受欢迎的。

1 个答案:

答案 0 :(得分:0)

我唯一一次看到类似的行为就是当我请求数据时,在检索结束时我将数据解释为错误的类型,例如。在我的情况下,jQuery期望JSON但是XML被发送然后我得到空数据。然后我必须设置jQuery以将数据明确地解释为xml。可能是你的情况吗?