如何从javascript向MVC Action发送一些值?

时间:2014-02-12 09:18:37

标签: jquery asp.net-mvc

我有一个MVC Action接受一个值列表,如下所示:

 [HttpGet]
        public JsonResult Events(string[] vals)
        {
            var events = _lcmEventsRepository.FindAllByEventTypeId(vals[0]);

            return Json(events);
        }

如何从javascript向此Action发送一些值?

我正在使用以下代码,但服务器端收到的值格式不正确:

var eventtypes = ['1', '2'];

 $.ajax({
                url: shouldRepopulateFromAction,
                //data: { vals: JSON.stringify(selectedValues) },
                data: { vals: JSON.stringify(eventtypes) },
                type: 'GET',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data);
                },
                error: function (data) {
                    alert('error!');
                }
            });

vals参数有一个成员,其值为

["1","2"]

1 个答案:

答案 0 :(得分:1)

如果设置'traditional:true',那么您正在尝试使用JSON.stringify()来序列化数组。这样做是发送这样的数组:

/Events?vals=1&vals=2

如果你没有设置'traditional:true',那么数组将像这样发送:

/Events?vals%5B%5D=1&vals%5B%5D=2   

所以解决方案就是:

 var eventtypes = ['1', '2'];

 $.ajax({
                url: shouldRepopulateFromAction,
                data: { vals: eventtypes },
                type: 'GET',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                traditional: true,
                success: function (data) {
                    alert(data);
                },
                error: function (data) {
                    alert('error!');
                }
            });

将数组发送到服务器时应考虑使用POST。