当中间为AJAX请求返回的responseXML被切断时,我们遇到一个奇怪的行为。我们同时检查了readyState(用于4)和XmlHttp.status(用于200),然后才继续解析responseXML。

以下是相关代码:

.
.
.
if ((myCommunicator != null) && (myCommunicator.XmlHttp.readyState == 4))
{
    myCommunicator.OnDataAvailable();
}


OnDataAvailable函数:

SoapCommunicator.OnDataAvailable = function () {
DebugWrite("OnDataAvailable");
XMLResponse = this.XmlHttp.responseXML;

if (this.XmlHttp.status != 200)
{
    DebugWrite("XmlHttp.status " + this.XmlHttp.status);
    DebugWrite("XmlHttp.statusText " + this.XmlHttp.statusText);
    DebugWrite("XmlHttp.readyState " + this.XmlHttp.readyState);
}
//  DebugWrite("xml=" + XMLResponse.xml.replace(/\r\n/g, ""));
if (XMLResponse.xml.length > 0)
{
    if (0 == XMLResponse.parseError.errorCode)
    {
        var dataNode = XMLResponse.lastChild.firstChild.firstChild.firstChild;
    }
    else
    {
        throw "Failed to parse SOAP response";
    }
}
else
{
    var result = new Object();
    result.IsSuccessful = false;
    result.ErrorDescription = "Failed to connect to server.";
    result.ErrorCode = failedToConnectToServer;
    eval(this.ResultCallBack + "(result)");
} }


在此示例中,dataNode保留信息。将其写入日志时,我们发现有时它会在中间被切断。仅对于大量数据,才注意到此行为。另一件事是,它总是被截断为不同的部分,而不是精确的X个字节。

顺便说一句,这恰好是客户的德语编码。

谢谢!

更新:
我忘记提及的另一件事是,一旦我们尝试解析数据(在readyState == 4和XmlHttp.status = 200之后),我们就会收到此错误:


  错误:消息='完成此操作所需的数据不是
  尚未推出”

最佳答案

假设您在后端(ASMX)上使用ASP.NET Web服务-尝试将此行添加到web.config文件中(在本节中):

<httpRuntime maxRequestLength="2147483647" />

关于javascript - AJAX响应-XmlHttp.responseXML被切断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15134804/

10-11 12:02