Menggunakan jQuery AJAX untuk Menghantar Array Objek kepada Pengawal MVC
Apabila menghantar tatasusunan objek ke pengawal MVC menggunakan kaedah ajax()
jQuery, masalah biasa ialah menerima nilai null
untuk tatasusunan dalam pengawal. Ini boleh berlaku walaupun apabila parameter pengawal ditakrifkan dengan betul sebagai List<T>
.
Penyelesaian melibatkan dua pelarasan utama:
Nyatakan Jenis Data JSON: Panggilan ajax()
mesti secara eksplisit menetapkan kedua-dua contentType
dan dataType
kepada 'application/json; charset=utf-8'
.
Sirikan Data dengan JSON.stringify(): Tatasusunan objek JavaScript perlu ditukar kepada rentetan JSON menggunakan JSON.stringify()
. Yang penting, rentetan ini harus merangkum tatasusunan dalam sifat (cth., 'benda').
Berikut ialah kod yang diperbetulkan yang melaksanakan perubahan ini:
<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>
Dan kaedah pengawal C# yang sepadan:
<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>
Dengan mengikuti langkah ini, anda akan berjaya menghantar tatasusunan objek ke kaedah pengawal MVC anda melalui jQuery AJAX. Perhatikan perubahan daripada failure
kepada error
dalam panggilan AJAX untuk pengendalian ralat yang lebih baik, memaparkan teks respons untuk tujuan penyahpepijatan.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Susunan Objek kepada Pengawal MVC Menggunakan jQuery AJAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!