Javascript HTTP错误414.请求URL太长

时间:2014-11-04 15:47:49

标签: javascript asp.net-mvc url

Javascript:

function tableToExcel() {

var calendar = document.getElementById("calendar").innerHTML;

window.location.href = "/Calendar/ExportData?calendar=" + calendar;
}

控制器:

 public ActionResult ExportData(string calendar)
        {
            string headerTable = calendar;

            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + "Calendar" + ".xls;");
            Response.ContentType = "application/ms-excel";

            Response.ContentEncoding = System.Text.Encoding.Unicode; 
            Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

            Response.Write(headerTable);
            Response.Flush();
            Response.End();

            return new EmptyResult();
        }

如果我使用window.location.href将document.getElementById(" calendar")。innerHTML发送到ExportData,我看到下面的url异常

Request URL Too Long

HTTP Error 414. The request URL is too long.

我发送参数但浏览器获取参数为url为什么?我应该怎么做才能解决这个问题,谢谢?

1 个答案:

答案 0 :(得分:1)

最大网址大小为 2,083 个字符。

  

如@Brian所述,HTTP客户端(例如浏览器)可能有   他们自己的限制,HTTP服务器将有不同的限制。   Microsoft支持称“最大URL长度为2,083个字符”   Internet Explorer“.IE浏览器的URL存在问题。

你应该使用post方法,所以:

此代码创建一个表单并将其附加到正文并提交。

function tableToExcel() {
    var calendar = document.getElementById("calendar").innerHTML;

    var form = $('<form action="ExportData" method="post"><input type="text" name="calendar" /></form>')

    form.find('input').val(calendar);

    form.appendTo('body').submit();
}

我建议您在行动中添加[HttpPost]属性。

[HttpPost]
public ActionResult ExportData(string calendar)