Asp.Net Mvc JQuery ajax输入参数为null

时间:2010-04-01 07:41:29

标签: asp.net-mvc jquery

我试图用jQuery Ajax发布一些数据,但我的Ajax方法中的参数是null。

这是发送数据的简单测试:

 var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' };
        jQuery.ajax({
            type: "POST",
            url: "Create",
            contentType: 'application/json; charset=utf-8',
            data: $.toJSON(dataPost),
            dataType: "json",
            success: function(result) {
                alert("Data Returned: ");
            }
        });

我的Ajax方法如下所示:

[HttpPost]
public ActionResult Create(string title, string message, string tagIds)
{... }

我发送的数据存在一些基本错误,但我无法弄清楚是什么。标题,消息和tagId一直都是null,所以编码有问题,我只是不知道是什么。

最佳参数tagIds应该是一个数组或guid列表。

注意:jQuery.toJSON是这个plugin

2 个答案:

答案 0 :(得分:15)

Create控制器操作不希望参数被JSON序列化,因此您不必这样做。尝试直接传递它们:

var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' };
jQuery.ajax({
    type: "POST",
    url: "Create",
    data: dataPost,
    dataType: "json",
    success: function(result) {
        alert("Data Returned: ");
    }
});

答案 1 :(得分:0)

我们不需要contentType: 'application/json; charset=utf-8',$.toJSON

这是代码让我开心!

 $(function () {
        $("#btnSumbit").click(function () {
            $('#results').hide();
            $('#loadingmessage').show();
            var a = $("#query").val();

            $.ajax({
                type: "POST",
                url: "/Search/Index",
                data: ({ query: a }),
                datatype: "json",
                success: function (data) {
                    $('#results').empty();
                    for (var i = 0; i < data.length; i++) {
                        var div = "<div>" + data[i].Name + "</div>";
                        $("#results").append(div);

                    }
                    $('#loadingmessage').hide();
                    $('#results').show();
                },
                failure: function (errMsg) {
                    $('#loadingmessage').hide();
                    alert(errMsg);
                }
            });
        });
    });