Verwenden von jQuery AJAX zum Senden eines Arrays von Objekten an einen MVC-Controller
Beim Senden eines Arrays von Objekten an einen MVC-Controller mithilfe der ajax()
-Methode von jQuery besteht ein häufiges Problem darin, einen null
-Wert für das Array im Controller zu empfangen. Dies kann auch dann passieren, wenn der Controller-Parameter korrekt als List<T>
.
Die Lösung beinhaltet zwei wichtige Anpassungen:
JSON-Datentyp angeben: Der ajax()
-Aufruf muss sowohl contentType
als auch dataType
explizit auf 'application/json; charset=utf-8'
setzen.
Daten mit JSON.stringify() serialisieren: Das JavaScript-Array von Objekten muss mit JSON.stringify()
in einen JSON-String konvertiert werden. Entscheidend ist, dass diese Zeichenfolge das Array innerhalb einer Eigenschaft (z. B. „Dinge“) kapseln sollte.
Hier ist der korrigierte Code, der diese Änderungen implementiert:
<code class="language-javascript">$(document).ready(function () { const things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; const data = JSON.stringify({ things: things }); $.ajax({ contentType: 'application/json; charset=utf-8', dataType: 'json', type: 'POST', url: '/Home/PassThings', data: data, success: function () { $('#result').html('"PassThings()" successfully called.'); }, error: function (response) { $('#result').html(response.responseText); // Display error details } }); });</code>
Und die entsprechende C#-Controller-Methode:
<code class="language-csharp">public void PassThings(List<Thing> things) { // Access the 'things' array here } public class Thing { public int Id { get; set; } public string Color { get; set; } }</code>
Indem Sie diese Schritte befolgen, übertragen Sie das Array von Objekten erfolgreich über jQuery AJAX an Ihre MVC-Controller-Methode. Beachten Sie die Änderung von failure
zu error
im AJAX-Aufruf zur besseren Fehlerbehandlung und zur Anzeige des Antworttextes zu Debugging-Zwecken.
Das obige ist der detaillierte Inhalt vonWie übergebe ich mit jQuery AJAX ein Array von Objekten an einen MVC-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!