2012-10-22 50 views
0

正在使用腳本向我的Django後端發出簡單的發佈請求。我希望數據採用Json格式。Ajax發佈的數據格式不正確。 Django

<input id ="my" type="submit" onclick="me()"/> 

<script> 
function me() 
{ 
     var data2 =JSON.stringify ({ 
         "crave": "romana", 
         "uid": "100", 
         "access_token": "AAA"      
        }); 
    alert(data2); 
    $.ajax({ 
         url: "http://localhost:8000/trial/", 
         type: 'POST', 
         contentType: "application/x-www-form-urlencoded", 
         data: data2, 
         dataType: 'json', 
         processData: false 
        }); 

} 
</script> 

在視圖當我打印request.POST它顯示了以下

{u'{"crave":"romana","uid":"100","access_token":"AAA"}': [u'']} 
enter code here 

我在做什麼錯?

+0

你嘗試沒有 「字符串」? – dsign

+0

是的,打印request.POST的結果是

+0

processData:true和stringify?請注意,x-www-form-urlencoded是一種不同於json的格式,並且jquery會將javascript對象轉換爲x-www-form-urlencoded,除非您使用'processData:false'來停止它。 – dsign

回答

2

嘗試以下操作:

$.ajax({ 
    type: 'POST', 
    url: 'http://localhost:8000/trial/', 
    data: data2, // without stringifying 
    success: function(res) { } 
}); 

或者作爲一種快捷方式:

data2 = {crave: "romana", uid: "100", access_token: "AAA"} 
$.post('http://localhost:8000/trial/', data2, function(res) { }); 
+0

完美,我認爲成功功能對正在發送的數據沒有任何影響。我做錯了什麼? –

+0

@AkashDeshpande成功函數沒有什麼區別......它可能是processData和contentType被設置的組合。 –

+0

哦,對了,謝謝! –