【发布时间】:2010-11-08 13:43:13
【问题描述】:
更新:我继续前进,而不是寻找答案
更新:请参阅下面的最新更新。
我正在使用 JQuery 的 jQuery.ajax() 函数进行 POST 请求,当传出的 Content-Length 超过 3508 字节时,出现问题并且没有返回响应。只要 Content-Length 保持在 3509 字节以下,一切都会正常工作。
以下是我注意到的其他一些事情:
如果我将方法从 POST 更改为 GET,一切正常,但由于 URL 具有(特定于浏览器的)最大长度,我认为我不能这样做(例如,最大长度为 2,083 Internet Explorer 的字符)。
当我执行普通的非 XMLHttpRequest 表单 POST 时,一切正常(即使 Content-Length 远大于 3508 字节)。
Firefox (3.6.12) 仍将调用成功处理程序,数据为“未定义”,而 Internet Explorer (8) 将改为调用错误处理程序,文本状态为“错误”,errorThrown 为“未定义”。
请注意,在“服务器端”,我正在运行 ASP.NET 开发服务器并使用 ASP.NET MVC 1.0。
这基本上是我正在做的事情:
$.ajax({
type: "POST",
url: "", // A resource on localhost
// The following string results in a Content-Length of 3509 bytes
data: "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------",
success: function(response) {
alert(response);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + " " + errorThrown);
},
dataType: "json"
});
有什么想法吗?
更新:
以下是失败请求的请求标头(没有响应):
POST /WPA/BerekenEindcijfer HTTP/1.1
Host: localhost:4387
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:4387/WPA
Content-Length: 3509
更新:我将应用程序发布到 IIS (5.1) 并没有出现问题,而且奇怪的是,现在使用 ASP.NET 开发服务器也不再出现问题。出于某种原因,请求中出现了两个新标头(尽管我不确定它们是否有任何影响):
Pragma: no-cache
Cache-Control: no-cache
我仍然对正在/正在发生的事情感到困惑。
【问题讨论】:
-
传出或返回内容长度?
-
data长什么样子,能举个例子吗? -
您能否确认您发布的“基本上我在做什么”的代码实际上重现了问题?塔。
-
@Matt Gibson:我现在可以了,原来我有
method: "POST",但现在应该是type: "POST"(如果缺少类型,它默认为GET)。 -
很奇怪。你能在不同的服务器上确认这一点吗?
标签: asp.net asp.net-mvc firefox jquery