我正在尝试使用Ajax下载生成的文件(pdf),它在Chrome和IE中完美运行,但在FireFox中却无法正常运行。 这是我的代码:
function Download(urlAction, urlDownload) {
$.ajax({
type: "post",
url: urlAction,
data: {
'itemIds': checkedItems,
'dateMin': datemin.toISOString(),
'dateMax': datemax.toISOString()
},
datatype: "json",
traditional: true,
success: function (data) {
console.log('fff', data);
if (data.success) {
window.location = urlDownload;
}
}
error: function (xhr, textStatus, err) {
console.log("readyState: " + xhr.readyState);
console.log("responseText: " + xhr.responseText);
console.log("status: " + xhr.status);
console.log("text status: " + textStatus);
console.log("error: " + err);
}
});
}
}
在UrlAction中,我以Json格式生成文件并将其发布到会话中,然后在我的urlDownload中再次调用它。 在Chrome和IE中,无需重新加载页面即可下载文件,但在Firefox中,仅重新加载页面。
错误提示:
答案 0 :(得分:0)
dataType(默认值:Intelligent Guess(xml,json,脚本或html)) 类型:字符串您要从 服务器。如果未指定任何内容,则jQuery将尝试根据 响应的MIME类型
因此您可以尝试先删除该参数。
关于错误状态,为0
,您可以在此处找到详细的原因:
XMLHttpRequest status 0 (responseText is empty)
关于您的错误处理程序,error: function (xhr, textStatus, err)
:
xhr.status
显示了原因,您必须检查服务器端配置;但是您没有提到什么是服务器环境。textStatus
可以是以下值:"timeout", "error", "abort", and "parsererror"
; err
可能不确定; 这是官方文件:
类型:函数(jqXHR jqXHR,字符串textStatus,字符串errorThrown)A 如果请求失败,则调用该函数。功能接收 三个参数:jqXHR对象(在jQuery 1.4.x中,XMLHttpRequest),一个 描述发生的错误类型的字符串和可选的 异常对象(如果发生)。第二个可能的值 参数(除null外)是“超时”,“错误”,“中止”和 “ parsererror”。发生HTTP错误时,errorThrown会收到 HTTP状态的文本部分,例如“未找到”或“内部 服务器错误。”从jQuery 1.5开始,错误设置可以接受一个数组 功能。每个函数将依次调用。注意:此处理程序 跨域脚本和跨域JSONP请求未调用。 这是一个Ajax事件。
答案 1 :(得分:0)
对我有用的是,将按钮(调用此方法的按钮)从div窗体中移出,它停止了重新加载页面的工作,下载像是很吸引人的。