C# 使用ajax下载文件在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

我正在尝试使用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中,只需重新加载页面

错误显示:

  • 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请参见编辑,无新内容双击控制台中的
      错误
      ,它会将您导航到错误行,在那个里添加一个调试器/断点,刷新页面,然后你们会发现什么是错误详细信息,包括调用堆栈。在这里发布或自己解决。