17

私は周りを見回してさまざまな方法を試しましたが、実際のデータをコントローラーの関数に渡すことができないようです。

ここにいくつかのコードがあります:

        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でありoldEntry、両方のオブジェクトです。

行はこれalertを出力します(簡潔にするために、いくつかのプロパティを削除しています):

{"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}}

コントローラー アクション ("UpdateEntry") をデバッグすると、2 つのパラメーターにTimesheetEntryクラスの既定のパラメーター (0) が入力されます。

これを適切に渡していますか?

4

3 に答える 3

40

このdataType属性は、サーバーからデータを取得する場合にのみ使用されます。サーバーにデータを送信するときcontentTypeは、に設定する必要があります。application/json

于 2012-10-24T20:15:29.747 に答える
6
$.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'
})

これは私のために働いた

于 2017-03-05T06:07:37.147 に答える
4

ヘッダーを使用して、リクエスト タイプ{"X-HTTP-Method-Override": "PUT"}をオーバーライドします。POSTそれは私のプロジェクトで動作します...

$.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
});
于 2015-12-23T20:42:20.613 に答える