使用ajax post将大字符串发送到控制器

时间:2016-05-05 15:40:18

标签: ajax asp.net-mvc

我正在开发一个ASP.NET MVC应用程序,我需要将存储在sessionStorage中的数据发送到Controller。此存储具有键值对,其中键已“确认”。该值是一个带数字的数组,如[1,2,3,4,5]。

我需要将此数组发送到我的控制器,一切正常,除非此数组太长。我尝试用以下内容更改配置:

 <appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="1000000" />
 </appSettings>

<system.web.extensions>
    <scripting>  
         <webServices>                                                   
             <jsonSerialization maxJsonLength="1000000" />                 
         </webServices>
    </scripting>
</system.web.extensions>

但似乎没有任何效果。只有阵列不长时才能正常工作。 这是我的代码:

脚本:

$(".enviar").click(function () {
        getSelectedItems();

        var seleccion = sessionStorage.confirmed;

        $.ajax({
            url: "/Controller/Action",
            type: "POST",
            //data: { confirm: JSON.stringify(seleccion) },
            data: JSON.stringify({ confirm: seleccion }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (returndata) {
                window.location = "@Url.Action("SomeAction","Controller")";
            },
            error: function (returndata) {
                window.location.href = "@Url.Action("AnotherAction","Controller")";
            }
        });

        //sessionStorage.clear();
    });

控制器:

[HttpPost]
    public ActionResult Action(string confirm)
    {
        if (!String.IsNullOrEmpty(confirm))
        {
            confirm = confirm.Substring(1, confirm.Length - 2);
            var confirmadas = confirm.Split(',');

            foreach (var id in confirmadas)
            {
                //change things in DB
            }

            return Json(new { ok = true, newurl = Url.Action("SomeAction", "Controller") });

        }
        return Json(new { ok = false, newurl = Url.Action("SomeAction", "Controller") });
    }

请帮忙,我几乎尝试了所有的东西,有时它会起作用,但有时却没有。

谢谢。

1 个答案:

答案 0 :(得分:0)

1.将数组加入字符串:

var str=seleccion .join(",");

2.只需将其传递给数据对象

data: { confirm: str}