在执行Ajax请求时,Chrome会在某些情况下提供“XMLHttpRequest Exception 101”

时间:2012-05-16 10:20:52

标签: ajax google-chrome xmlhttprequest

我有一个像这样工作的JavaScript应用程序:

  • 上传文件,接收上传的文件ID作为回复
    这是使用BlueImp上传器
  • 完成的
  • 使用文件ID在后续请求中引用该文件,在这种情况下接收上传文件的预览。

这是文件上传'完整'处理程序的代码。它最初是用Coffee Script(http://pastebin.com/708Cf9tu)编写的。

var completeHandler = function(e, data) {
    var url;
    if (data.textStatus !== 'success') {
        alert("Noe gikk galt. Debug informasjon er logget i konsollen");
        console.group('Upload failure');
        console.error(data.textStatus);
        console.error(data.result);
        console.groupEnd('Upload failure');
        selectButton.removeClass('disabled');
        uploadButton.removeClass('disabled loading');
        uploadButton.html('Last opp');
        return;
    }
    self.fileUploadResponse = data.result;
    url = "" + config.api_root + "/" + config.api_path_tabulardatafilepreview;
    return $.ajax(url, {
        type: 'POST',
        dataType: 'json',
        async: false,
        data: {
            'file_handle': data.result.file_handle,
            'rownum': 5
        },
        complete: function(req, text_status) {
            if (text_status !== 'success') {
                alert("Noe gikk galt. Debug informasjon er logget " + "i konsollen");
                console.group('Failed to receive data file preview');
                console.log(text_status);
                console.log(req.responseText);
                console.log(req);
                console.groupEnd('Failed to receive data file preview');
                selectButton.removeClass('disabled');
                uploadButton.removeClass('disabled loading');
                uploadButton.html('Last opp');
            }
            self.previewData = JSON.parse(req.responseText);
            return self.setStage(2);
        }
    });
};

这在FireFox中非常出色,但在Chrome中我刚开始在第二个jQuery Ajax请求中出错。它现在返回状态为“error”,没有responseText,statusText设置为“Error:NETWORK_ERR:XMLHttpRequest Exception 101”。虽然在所有情况下都不会发生这种情况。上传的文件似乎与此问题无关,因为 10KB csv文件有效, 120KB xlsx文件失败,但 1.2MB < / em> xlsx有效。此外,它是第二个失败的Ajax请求,除了向服务器发送两个小整数之外它什么都不做。为什么会失败!?

这也刚刚开始发生。我没有改变我所知道的任何内容,而且我更新了Chrome。

有没有人知道为什么Chrome会这样做?它可以与在先前的Ajax请求的完整处理程序中启动的Ajax请求有关吗?

感谢任何可以帮助我解决这个问题的猜测

1 个答案:

答案 0 :(得分:0)

原来在Ajax事件处理程序中启动冗长的进程是个坏主意。在我的例子中,在事件处理程序中启动一个新的同步Ajax请求是错误的。我已经将这两个请求异步并将代码分成了整齐的函数,并且我不再被异常所困扰。