2015-11-20 1 views
0

J'ai un problème avec l'envoi des données du navigateur à un API sur mon serveur par une requête ajax au serveur (la méthode est PUT). Voici mon JavaScript code:La réception des propriétés de l'objet est nulle sur le serveur après une requête ajax put

var json = JSON.stringify({ 
    StemType: { 
     ID: parseInt(this.dataset.id), 
     Type: this.dataset.type, 
     GebruikerID: "@(Model.DeTopic.Gebruiker.Id)" 
    }, 
    Punten: parseInt(this.dataset.punten), 
    GestemdeGebruikerID: "@(Model.AangemeldeGebruiker)" 
}); 

$.ajax({ 
    url: "../Stem/Toevoegen", 
    type: "PUT", 
    data: json, 
    success: function (returnData) { 
     // my code 
    } 
}); 

Voici le code JSON dans la JSON variable:

{ 
    "StemType": { 
     "ID": 24731, 
     "Type": "Topic", 
     "GebruikerID": "539e6078" 
    }, 
    "Punten": 1, 
    "GestemdeGebruikerID": "3aedefab" 
} 

Et voici le code C# sur le serveur.

public class StemController : ApiController 
{ 
    [HttpPost] 
    [Authorize] 
    [Route("Stem/Toevoegen")] 
    public void Toevoegen([FromBody]Stem stem) 
    { 
     Console.WriteLine(stem.ToString()); 
    } 
} 

Voici la classe Stem:

public class Stem 
{ 
    public StemType StemType { get; set; } 
    public int Punten { get; set; } 
    public string GestemdeGebruikerID { get; set; } 
} 

public class StemType 
{ 
    public int ID { get; set; } 
    public Type Type { get; set; } 
    public string GebruikerID { get; set; } 
} 

Mais si je déboguer mon code sur le serveur, j'ai ceci:

StemType value is null, punten value is zero, GestemdeGerbuikerID is also null

Quelqu'un peut-il me aider?

+1

Votre stringification de l'objet inclut donc l'application 'contentType:"/json ",' option –

+2

Ou tout simplement ne pas le stringifier. – Camo

Répondre

0

J'ai trouvé deux façons possibles:

  1. Ne pas stringify pour envoyer comme un objet.
  2. Ajoutez contentType: "application/json" pour le code Json.