2017-01-20 36 views
1

REST框架API我有型號:郵政JSON來的Django與jQuery的AJAX不工作

class Publicacion(models.Model): 
    usuario = models.ForeignKey(User) 
    fecha = models.DateField(auto_now_add=True) 

class Estado(models.Model): 
    publicacion = models.OneToOneField(Publicacion, on_delete=models.CASCADE) 
    texto = models.TextField() 
    imagen = models.ImageField(upload_to='estados', blank=True, null=True) 

所以我的JSON應該像

{ 「國家體制」:{ 「texto」: 「」 「imagen畫質」:圖像 }}

我的jQuery Ajax是

$$.ajax({ 
    beforeSend: function(request) { 
     request.setRequestHeader("Authorization", "Token " + token); 
    }, 
    url: "url", 
    dataType: 'JSON', 
    type: 'POST', 
    data: JSON.stringify({"estado":{"texto": "text", "imagen": dataImg}}), 
    success: function (data) { 
     myApp.alert("Correcto"); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     console.log(xhr); 
    } 
}); 

但是當我發送它與我有一個400錯誤的請求響應,服務器說,「estado」是必需的,任何想法有什麼問題?

+0

你有沒有嘗試過'JSON.stringify()'? – DelightedD0D

+0

是的,郵遞員,JSON完美 –

+0

只爲笑臉,嘗試設置'處理數據:假' – DelightedD0D

回答

0

最前一頁,JSON.stringify()變成一個JavaScript對象轉換爲JSON文本,所以,當你建造上的蒼蠅,你只能這樣發送:

data: {estado:{texto: "text", imagen: dataImg}}, 

在你需要其他情況要做到這一點(你失蹤的contentType):

dataType: 'JSON', 
contentType: 'application/json', 
data: JSON.stringify(yourObject), 
0

您不必明確地設置content_type參數,如果你讓jQuery的處理它,你可以發送後端的正常關聯數組,它會正常工作

$.ajax("domain/end_point",{ 
    type: "POST", 
    data : {"details": "my assoc data"}, 
    crossDomain: true, 
    // contentType: "application/json; charset=utf-8", 
    dataType: "json" 
});