Ajax帖子没有将任何数据传递给MVC控制器

时间:2014-08-20 21:34:10

标签: javascript jquery ajax asp.net-mvc

这:

        $.ajax({
            url: '/Merchant/SaveDirty',
            type: 'POST',
            dataType: 'json',
            data: ko.toJSON(dirtyItems),
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                // get the result and do some magic with it
                //var message = data.Message;
                alert(ko.toJSON(dirtyItems));
            }
        });

...目前称之为:

[HttpPost]
public void SaveDirty(string json)
{

}

...但是当我在SaveDirty中点击断点时,没有数据传递。我已经验证了ko.toJSON(dirtyItems)在javascript中返回一个JSON字符串。我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

@KillingsWorth,您是否有任何特定原因要发布JSON字符串?如果没有,那么你可以创建一个与dirtyitems类型相对应的类,在你的控制器方法中你可以接受一个dirtyItems列表。

Class DirtyItem 
{ // dirty item properties }

[HttpPost]
public void SaveDirty(List<DirtyItem> dirtyItems)
{

}

答案 1 :(得分:1)

您可以使用以下内容:

$。AJAX({

        url: '/Merchant/SaveDirty',

        type: 'POST',

        dataType: 'json',

        data: JSON.stringify(dirtyItems),

        contentType: 'application/json; charset=utf-8',

        success: function (data) {
            ///

///

        }

    });

但是如果您在应用程序中使用knockout.js,那么您应该执行以下操作:

$。AJAX({

        url: '/Merchant/SaveDirty',

        type: 'POST',

        dataType: 'json',

        data:JSON.stringify(ko.mapping.toJS(dirtyItems)),

        contentType: 'application/json; charset=utf-8',

        success: function (data) {

            // get the result and do some magic with it

            //var message = data.Message;

            alert(ko.toJSON(dirtyItems));


        }

    });

答案 2 :(得分:0)

这应该有效:

$.ajax({
            url: '@Url.Action("SaveDirty", "Merchant")'
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(dirtyItems),
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                // get the result and do some magic with it
                //var message = data.Message;
                alert(ko.toJSON(dirtyItems));
            }
        });