Ajax调用超过可接受的URI长度

时间:2010-11-18 11:12:40

标签: .net asp.net jquery ajax asp.net-mvc-2

我有一个ASP.NET MVC配置,我正在构建一个reportgenerator。我正在输出一个JQuery表,以便用户可以在将其作为PDF获取之前对其进行排序和重新排列。我的PDF组件是基于.NET的,因此我需要通过AJAX将修改后的表发送回服务器。

问题是URI可能会达到100k字符,使服务器响应状态为414(Request-URI Too Long)。似乎IIS不允许URI超过几千个字符。

我承认编写一个很大的URL似乎很奇怪,所以我想我可能会遗漏一些东西。是否有另一种方法将数据发布到服务器,或者可能以另一种方式解决这个问题?

2 个答案:

答案 0 :(得分:5)

发送长度超过几百个字符的数据的推荐方法是使用HTTP POST而不是GET。 GET将所有数据作为键值对(例如?foo=bar&baz=blah)附加到URI,而POST将数据放入请求正文中。总请求长度也有限制,但它远远大于对URI的限制。 在jQuery方面,从GET切换到POST是微不足道的 - 阅读jQuery.ajax()上的文档以获取详细信息。 在服务器端,您可能需要更改内容以便从POST而不是GET读取参数,但在大多数情况下,这也相对容易。

答案 1 :(得分:2)

您问题的关键是发布。您需要POST返回服务器。

API jQuery AJAX post method.

$.post(url, [data], [success(data, textStatus, XMLHttpRequest)], [dataType]);