什么是ajax响应数据的最大大小?

时间:2009-11-10 17:47:45

标签: ajax size response max

我从asp.net页面发送请求,然后等待响应,通过SetInterval方法调用GetCommand:

    function GetCommand(id, sid) {
    getCommandResponse = $.ajax({
        type: "POST",
        async: true,
        url: "../WebServices/TSMConsole.asmx/GetCommand",
        data: "{'param' : '" + id + "', 'sid' : '" + sid + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result, status) {
            AjaxFinishedGet(result, status);
            getCommandResponse = null;
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            AjaxFailedGet(XMLHttpRequest, textStatus, errorThrown);
            getCommandResponse = null;
        }
    });
}

在AjaxFinishedGet(结果,状态)中,我尝试提取我的数据:

    function AjaxFinishedGet(xml, status) {
    endDate = new Date();
    if (xml.d.IsPending == 'false' || endDate - startDate > timeoutMSec) {
        if (getCommand != null) {
            window.clearInterval(getCommand);
            getCommand = null;
            WriteGetCommand(xml.d.Text);
            $("#showajax").fadeOut("fast");
        }
    }
}

但是,如果Text size大于102330字节 - 而不是AjaxFinishedGet,则调用AjaxFailedGet:(

我没有找到任何关于ajax响应数据大小的限制和javascript变量大小的信息,至少这样的变量可以容忍1MB而没有问题。实际上,文本可能包含1MB的数据......

问题出在哪里?

4 个答案:

答案 0 :(得分:1)

好吧,多个请求可能会导致错误,也许一个好的解决方案是验证没有活动的当前请求。

var loading = false;
function GetCommand(id, sid) {
    if (loading) {return false;}
    loading =  true;
        getCommandResponse = $.ajax({
         ....
         ....
        });

}

function AjaxFinishedGet(xml, status) {
    loading = false;
    ...
    ...
}

答案 1 :(得分:1)

James Black,我没有任何关于错误的信息:

function AjaxFailedGet(XMLHttpRequest, textStatus, errorThrown) {
    $("#<%= tbResponse.ClientID %>").text(errorThrown);
    if (getCommand != null) {
        window.clearInterval(getCommand);
        $("#showajax").fadeOut("fast");
    }
}
  • errorThrown为空。

WebServer是Vista x32上的IIS7

zazk, 谢谢,这样的检查是一个很好的观点,我将使用这个标志的可靠性。但是,在给定的情况下,我不认为这可能是问题的原因:当数据大小为102330时,响应输出始终有效,并且从102331开始不起作用(我正在使用新的字符串('x') ,102330),所以它不能是任何特殊的字符问题或类似的东西)。

答案 2 :(得分:0)

.NET的web.config文件中有一个默认设置是4mb

<system.web>
<httpRuntime maxRequestLength="4096" />
</system.web>

因为maxRequestLength是INT,理论最大值是INT最大值2,147,483,647

答案 3 :(得分:0)

我刚刚遇到一个令人讨厌的错误,我追踪到从AJAX调用返回的字符串的长度。它大约是63639(iirc)接近于一个ushort的限制(再次,iirc!)(我想iis会附加自己的东西来弥补其余的字符限制)。

我设法从字符串中的html中删除所有样式,并在客户端收到它时通过JQuery附加它! :)