Bagaimana cara mengimplementasikan panggilan PUT dengan data JSON menggunakan AJAX dan JQuery?

Saya telah melihat-lihat dan mencoba berbagai metode, tetapi sepertinya tidak dapat meneruskan data aktual ke fungsi controller saya.

Berikut ini beberapa kode:

        var URL = "/Timesheet/Timesheet/UpdateEntry";

        var dataObject = { 'newWeekEntry': newEntry, 'oldWeekEntry': oldEntry };

        alert(JSON.stringify(dataObject));

        $.ajax({
            url: URL,
            type: 'PUT',    
            data: JSON.stringify(dataObject),
            dataType: 'json',
            success: function(result) {
                alert("success?");
            }
        });

newEntry dan oldEntry keduanya adalah objek.

Baris alert mengeluarkan output ini (dengan beberapa properti yang dihilangkan, hanya untuk singkatnya):

{"newWeekEntry":{"MondayHours":2,"TuesdayHours":2,"WednesdayHours":5,"ThursdayHours":5,"FridayHours":"4","SaturdayHours":0,"SundayHours":0},"oldWeekEntry":{"MondayHours":2,"TuesdayHours":2,"WednesdayHours":5,"ThursdayHours":5,"FridayHours":2,"SaturdayHours":0,"SundayHours":0}}

Ketika saya men-debug aksi pengendali saya ("UpdateEntry"), dua parameter diisi dengan parameter default kelas TimesheetEntry (0).

Apakah saya mengoper ini dengan benar?

Larutan

Atribut dataType hanya digunakan ketika Anda mendapatkan data dari server. Anda harus menetapkan contentType ke application/json ketika mengirim data ke server.

Komentar (1)

Gunakan header: {"X-HTTP-Method-Override": "PUT"} dan timpa jenis permintaan POST. Ini bekerja pada proyek saya...

$.ajax({
    type: 'POST', // Use POST with X-HTTP-Method-Override or a straight PUT if appropriate.
    dataType: 'json', // Set datatype - affects Accept header
    url: "http://example.com/people/1", // A valid URL
    headers: {"X-HTTP-Method-Override": "PUT"}, // X-HTTP-Method-Override set to PUT.
    data: '{"name": "Dave"}' // Some data e.g. Valid JSON as a string
});
Komentar (3)
$.ajax({
        url: window.serverUrl + 'student/event/' + eventId,
        type: 'put',
        data: JSON.stringify(data),
        headers: {
            'x-auth-token': localStorage.accessToken,
            "Content-Type": "application/json"
        },
        dataType: 'json'
})

Ini berhasil untuk saya

Komentar (0)