我有一个像这样工作的JavaScript应用程序:
这是文件上传'完整'处理程序的代码。它最初是用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请求有关吗?
感谢任何可以帮助我解决这个问题的猜测
答案 0 :(得分:0)
原来在Ajax事件处理程序中启动冗长的进程是个坏主意。在我的例子中,在事件处理程序中启动一个新的同步Ajax请求是错误的。我已经将这两个请求异步并将代码分成了整齐的函数,并且我不再被异常所困扰。