2009-11-18 6 views
0

J'essaie actuellement de mettre en place le merveilleux plugin jQuery 'calendrier de la semaine' (here) dans mon site Web asp.net simple. J'ai mis en place quelques [WebMethods] pour envoyer des données au calendrier et pour répondre aux événements côté client (création d'événements, modification d'événements, etc.).Je désérialise json date sur le serveur (asp.net)

La sérialisation automatique des objets d'asp.net lors de l'utilisation de WebMethods semble bien fonctionner lors de l'envoi des données, mais lorsque l'inverse se produit, je rencontre des problèmes.

Le code javascript en question qui envoie l'événement de calendrier sur le serveur est comme suit:

save: function() { 
        calEvent.id = id; 
        id++; 
        calEvent.start = new Date(startField.val()); 
        calEvent.end = new Date(endField.val()); 
        calEvent.title = titleField.val(); 
        calEvent.body = bodyField.val(); 

        $calendar.weekCalendar("removeUnsavedEvents"); 
        $calendar.weekCalendar("updateEvent", calEvent); 
        $dialogContent.dialog("close"); 
        //SAVE TO DATABASE 

        $.ajax({ 
         type: "POST", 
         url: "Tracker.aspx/AddEvent", 
         data: calEvent, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function(data) { 
          alert("saved"); 
         } 
        }); 

Actuellement, je viens d'une « méthode stub » sur le serveur pour vérifier que désérialisation fonctionne:

[WebMthod]  
public static string AddEvent(Event e) 
     { 
      //save event to database and return something 
      return "done"; 
    } 

Cependant, je ramassant l'exception suivante lors de l'ajout d'un événement:

non valide JSON pr imitive: commencez.

Sur le serveur, mon objet événement est composé comme suit:

[DataContract] 
public class Event 
{ 
    [DataMember] 
    public int id { get; set; } 
    [DataMember] 
    public string title { get; set; } 
    [DataMember] 
    public string body { get; set; } 
    [DataMember] 
    public string start { get; set; } 
    [DataMember] 
    public string end { get; set; } 
} 
+0

@Chris: lors de modifications, il est préférable de résoudre tous les problèmes Au lieu de simplement changer en masse les étiquettes sur une variété de questions. Je vous remercie! –

+0

@Chris: pas de soucis, je fais référence à vos modifications en général, j'ai été le premier sur le listso que j'ai cliqué celui-là. –

Répondre

0

Modification de l'appel au service Web comme suit fait le tour:

$.ajax({ 
         type: "POST", 
         url: "Tracker.aspx/AddEvent", 
         data: '{e : ' + JSON.stringify(calEvent) + '}', 
         contentType: "application/json; charset=utf-8", 
         dataType: "text", 
         success: function(data) { 
          alert("saved"); 
         } 
        }); 

juste eu à jouer du violon avec le format du JSON envoyé au serveur à l'aide de la fonction JSON.stringify

Questions connexes