C# 使用ajax下载文件在firefox上不起作用
我正在尝试使用Ajax下载生成的文件(pdf),它在Chrome和IE中工作得非常好,但在FireFox中却不行。 这是我的密码:C# 使用ajax下载文件在firefox上不起作用,c#,ajax,asp.net-mvc,C#,Ajax,Asp.net Mvc,我正在尝试使用Ajax下载生成的文件(pdf),它在Chrome和IE中工作得非常好,但在FireFox中却不行。 这是我的密码: function Download(urlAction, urlDownload) { $.ajax({ type: "post", url: urlAction, data: { 'itemIds': checkedItems, 'dateMin': date
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中,只需重新加载页面
错误显示:
- readyState:0
- responseText:未定义
- 状态:0
- 文本状态:错误
- 错误:未定义
- 说:
数据类型(默认值:智能猜测(xml、json、脚本或html))
Type:String您希望从
服务器。如果未指定,jQuery将根据
响应的MIME类型
因此,您可以先尝试删除该参数
关于您的错误状态,它是
0
,您可以在这里找到详细原因:
关于错误处理程序,error:function(xhr,textStatus,err)
:
xhr.status
显示原因,您必须检查服务器端配置;但您并没有提到什么是服务器环境textStatus
可以是以下值:“超时”、“错误”、“中止”和“解析器错误”
李>
err
可能未定义李>
以下是官方文件:
类型:函数(jqXHR jqXHR、字符串textStatus、字符串ERRORSHORN)A
请求失败时要调用的函数。函数接收
三个参数:jqXHR(在jquery1.4.x中,XMLHttpRequest)对象,一个
描述发生的错误类型的字符串,以及可选的
异常对象(如果发生)。第二个参数的可能值
参数(除null外)为“超时”、“错误”、“中止”和
“parsererror”。当HTTP错误发生时,ErrorSprown接收
HTTP状态的文本部分,例如“未找到”或“内部”
从jQuery 1.5开始,错误设置可以接受数组
函数的定义。每个函数将依次调用。注意:此处理程序
对于跨域脚本和跨域JSONP请求不调用。
这是一个Ajax事件
对我有效的是,我将按钮(调用此方法的按钮)从表单div中取出,它停止了重新加载页面,下载工作非常顺利。为失败条件创建函数,而不仅仅是成功条件。看看错误是什么。我猜这是TLS问题,根据我的经验,Firefox比其他浏览器更难原谅证书问题。@Crowcoder它写“未定义”查看
错误
,而不是xhr
@Crowcoder请参见编辑,无新内容双击控制台中的错误
,它会将您导航到错误行,在那个里添加一个调试器/断点,刷新页面,然后你们会发现什么是错误详细信息,包括调用堆栈。在这里发布或自己解决。