2014-03-27 89 views
3

服務器:在Heroku上運行的Django 1.4。所有請求都是HTTPS。jQuery的空請求正文JSON ajax請求

我的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應用程序中正在做這件事。

任何幫助調試或想法如何重現這將是最受歡迎的。

+0

你有錯誤的JavaScript缺少')'後二val – jcubic

+0

謝謝你。固定。 – DavidM

回答

0

我唯一見過類似行爲的時候是當我請求數據並且在檢索結束時,我將數據解釋爲錯誤的類型,例如。在我的情況下,jQuery希望JSON,但XML已發送,然後我得到空的數據。然後我必須設置jQuery將數據顯式解釋爲xml。你的情況會是這樣嗎?

+0

我相信$ .ajax調用中的dataType:'text'選項會阻止jQuery做任何解釋,所以這不適用。 – DavidM

+0

好的。很高興知道。謝謝! – olahell