我通过window.open()
从网页上的远程API打开文件下载。该API(Flask服务器)具有错误处理功能,如果内部发生服务器错误,则返回错误消息,如下所示:
@app.errorhandler(502) //all other errors are handled the same way, including 500, etc.
@crossdomain(origin='*')
def bad_gateway_error(error):
return "Bad Gateway Error - Please make sure you're using a properly formatted file! Details: " + str(error), 200
我想在我的网站上显示此错误,而不是重定向到错误页面。我试图通过以下方式捕获它:
try {
window.open("https://API/receivedoc?timestamp="+timestamp,"_self")
} catch(e) {
filerootdiv.querySelector('.output').innerHTML = String(e);
}
但是,此操作无效(已在Chrome中测试)。使用window.open
时如何捕捉错误?我猜可能是因为在错误处理中我返回了200条消息,以便实际上返回返回的字符串,而不是仅仅使服务器崩溃(这需要保持这种方式,因为当我遇到其他所有错误时,它都可以正常工作我不尝试返回文件)。问题是在执行window.open()
之前,我无法确定API请求是否返回文件或字符串。
更新
我尝试实施:
let new_window = window.open("https://flaskmin.run.aws-usw02-pr.ice.predix.io/receivedoc?timestamp="+timestamp,"_self")
newWindow.onerror = function() {
filerootdiv.querySelector('.output').innerHTML = "Error!";
但是,这仍然只会打开一个带有错误的新窗口。我猜这是由于服务器端的错误处理(我无法更改)。我可以在重定向到new_window
之前以某种方式探查import pandas as pd
file_path = "Input2010_5a.txt"
cov = pd.read_csv(file_path, sep='\t').cov()
的内容,如果它只是一个包含'error'一词的字符串而不能打开它的话?