AJAX将JavaScript字符串数组发布到JsonResult作为List <string>始终返回Null?

ahe*_*ick 35 arrays ajax asp.net-mvc jquery json

我正在尝试在JavaScript中构建一个字符串数组,并在action方法的字符串列表中获取结果.以下是我的JavaScript的样子.我正在使用jQuery 1.4.2.问题是我在动作方法中的List总是显示NULL.JavaScript字符串数组是否会映射到C#中的字符串列表?

    var test = ['test1', 'test2'];

    var parms = {
        var1: 'some string',            
        var2: test
    };

    $.ajax({
        type: "POST",
        url: "/Test/JSONTestAction",
        async: false,
        data: parms,
        dataType: "json",
        success: function(data) {

            // success
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后我的JsonResult看起来如下:

    public JsonResult JSONTestAction(string var1, List<string> var2)
    {
        // var2 is always NULL -- not good

        return Json(new { test = "test" });
    }
Run Code Online (Sandbox Code Playgroud)

uvi*_*ita 54

更新到jquery 1.4.2后我遇到了同样的问题.您可以在此处找到解决方案(在Ajax部分中).

添加传统:ajax选项中的true应该有效.

$.ajax({
    type: "POST",
    traditional: true,
    url: "/Test/JSONTestAction",
    async: false,
    data: parms,
    dataType: "json",
    success: function(data) {

        // success
    }
});
Run Code Online (Sandbox Code Playgroud)


Nic*_*ver 7

此更改是为了使PHP/Rails用户更好地使用本机行为,您可以在此处更多地了解params更改.

您可以按照以下请求启用它:

$.ajax({ 
 //Stuff...
 traditional:true 
});
Run Code Online (Sandbox Code Playgroud)

或像这样全局(只需要在触发任何请求之前运行一次):

jQuery.ajaxSettings.traditional = true;
Run Code Online (Sandbox Code Playgroud)