2017-06-25 7 views
0

ich an die Steuerung und bemerkte eine Liste MyModel mit AJAX/JSON passieren versuche, dass die Objekte alle vorbei als ‚undefiniert‘ sind:serialisierten Objekt Ajax/json undefined

[Form Beitrag Daten]

undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined=&undefined= 
Hier

ist mein Beispielcode:

[Model]

public class ICalEvent 
{ 
    public string EventTitle { get; set; } 
    public string EventAbstract { get; set; } 
    public string EventStartDate { get; set; } 
    public string EventEndDate { get; set; } 
    public string VenueTitle { get; set; } 
    public string VenueAddress { get; set; } 

} 

[Controller]

[HttpPost] 
public JsonResult JsonCreateICalEvents(IList<ICalEvent> iCalEvents) 
{ 
    Dictionary<String, String> status = new Dictionary<string, string>(); 

    if (iCalEvents != null) 
    { 
     status.Add("status", "success"); 
    } 
    else 
    { 
     status.Add("status", "No objects passed!"); 
    } 

    return Json(status); 
} 

[Ansicht]

List<ICalEvent> iCalEvents = new List<ICalEvent>(); 
. 
. 
. 
ICalEvent iCalEvent = new ICalEvent 
{ 
    EventTitle = eventTitle, 
    EventAbstract = eventAbstract, 
    EventStartDate = screeningDate.ToShortDateString(), 
    EventEndDate = screeningDate.ToShortDateString(), 
    VenueTitle = venueTitle, 
    VenueAddress = venueAddress 
}; 
. 
. 
. 
iCalEvents.Add(iCalEvent); 


<script> 
    $(document).ready(function() { 
     $("#ical-events").click(function() { 
      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("JsonCreateICalEvents", "ICalEvent")', 
       data: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(iCalEvents,Newtonsoft.Json.Formatting.None, new Newtonsoft.Json.JsonSerializerSettings { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.Default })), 
       dataType: 'json', 
       success: function (data) { 
        if (data.status == "success") { 
         alert("Worked!"); 
        } 
        else if(data.status != "success") 
        { 
         alert("Did not work!"); 
        } 
       } 
      }); 
      event.preventDefault(); 
     }); 
    }); 
</script> 

Wenn ich die AJAX JSON-Daten überprüfen, bevor Post sieht gut aus:

[{"EventTitle":"Opening Night: Keep the Change","EventAbstract":"Under the guise of a New York romantic comedy, Keep the Change does something quite radical: In a refreshingly honest way it portrays two adults on the autistic spectrum. David desperately wants to be seen as “normal,” but Sarah accepts who she is. Together they navigate the vicissitudes of a burgeoning relationship. Writer/director Rachel Israel has an obvious affection for her characters, which infuses this poignant and funny film from the first frame to the last.","EventStartDate":"7/20/2017","EventEndDate":"7/20/2017","VenueTitle":"Castro Theatre","VenueAddress":"429 Castro Street"},{"EventTitle":"More Alive Than Dead","EventAbstract":"The legacy of Sigmund Freud is a slippery subject indeed. Whatever your views on the founder of psychoanalysis, there is no denying his incalculable influence on science, art, culture and even language. More Alive Than Dead explores opinions on Freud over the years with a sense of humor accompanied by hilarious animation. Experts assess his influence on psychoanalysis, neurology, literature, the LGBT community, the economy and feminism. In other words, just about everything.","EventStartDate":"7/21/2017","EventEndDate":"7/21/2017","VenueTitle":"Castro Theatre","VenueAddress":"429 Castro Street"},...] 

Da alles Posten als undefiniert mein Controller Null-Daten empfängt. Irgendeine Idee, was ich vermisse? Vielen Dank im Voraus für die Hilfe!

+0

Fügen Sie 'contentType: 'application/json'' in der Einstellung für den Ajax-Anruf hinzu. Sie verwenden Json-Daten, und der Standardinhaltstyp ist 'application/x-www-form-urlencoded; charset = UTF-8 ' – shakib

+0

Sie müssen auch die Daten (mit 'JSON.Stringify (..)') stringieren, da Sie ein Array von komplexen Objekten veröffentlichen und keine Indexer verwenden (obwohl es unklar ist, wohin genau derselbe zurückgeht) Modell, das Sie gerade an den Client gesendet haben) –

+0

@Shakib Ich hatte ursprünglich diesen Parameter an Ort und Stelle, aber es würde die MVC Route brechen. Am Ende scheint es, ohne es zu sorgen. – OtoNoOto

Antwort

1

Es fehlt Ihnen, Ihren iCalEvents einen Umkreisnamen zuzuweisen, der dem Parameternamen der Aktion entsprechen sollte. Daher sollten Sie eine AJAX-Anforderung folgendermaßen aktualisieren:

$.ajax({ 
    type: 'POST', 
    url: 'http://example.com', 
    data: { iCalEvents: [{"EventTitle":"Opening Night: Keep the Change","EventAbstract":"Under the guise of a New York romantic comedy, Keep the Change does something quite radical: In a refreshingly honest way it portrays two adults on the autistic spectrum. David desperately wants to be seen as “normal,” but Sarah accepts who she is. Together they navigate the vicissitudes of a burgeoning relationship. Writer/director Rachel Israel has an obvious affection for her characters, which infuses this poignant and funny film from the first frame to the last.","EventStartDate":"7/20/2017","EventEndDate":"7/20/2017","VenueTitle":"Castro Theatre","VenueAddress":"429 Castro Street"},{"EventTitle":"More Alive Than Dead","EventAbstract":"The legacy of Sigmund Freud is a slippery subject indeed. Whatever your views on the founder of psychoanalysis, there is no denying his incalculable influence on science, art, culture and even language. More Alive Than Dead explores opinions on Freud over the years with a sense of humor accompanied by hilarious animation. Experts assess his influence on psychoanalysis, neurology, literature, the LGBT community, the economy and feminism. In other words, just about everything.","EventStartDate":"7/21/2017","EventEndDate":"7/21/2017","VenueTitle":"Castro Theatre","VenueAddress":"429 Castro Street"}]}, 
    dataType: 'json', 
    success: function (data) { 
     if (data.status == "success") { 
      alert("Worked!"); 
     } 
     else if(data.status != "success") 
     { 
      alert("Did not work!"); 
     } 
    } 

});

+0

Danke, das war das fehlende Stück und löste das Problem! – OtoNoOto

Verwandte Themen