Frage

Ich bin derzeit versucht, die wunderbare jQuery-Plugin 'Wochenkalender' ( hier ) in meiner einfachen asp.net Website. Ich habe ein paar [WebMethods] eingesetzte Daten in den Kalender zu senden und zu reagieren auf Client-Seite Ereignisse (Events Erstellen, Ändern Ereignisse usw.).

asp.net automatische Serialisierung von Objekten, wenn WebMethods scheint zu funktionieren gut zu verwenden, wenn die Daten zurückschicken, aber wenn das Gegenteil geschieht ich in Probleme laufen lasse.

Der JavaScript-Code in Frage, die das Kalenderereignis zurück an den Server sendet, ist wie folgt:

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");
                        }
                    });

Zur Zeit nur habe ich eine ‚Stub-Methode‘ auf dem Server, Deserialisierung Werke zu überprüfen:

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

Aber ich bin Kommissionierung der folgende Ausnahme, wenn ein Ereignis hinzufügen:

  

Ungültige JSON primitiv. Start

Auf dem Server, mein Ereignisobjekt wird sich wie folgt zusammen:

[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; }
}
War es hilfreich?

Lösung

Ändern Sie den Aufruf der Web-Service wie folgt der Trick:

$.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");
                        }
                    });

mußte einfach Geige mit dem Format des JSON an den Server gesendet werden, indem die JSON.stringify Funktion mit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top