带有错误检查的window.location.href调用

时间:2018-07-12 20:25:19

标签: jquery asp.net-mvc

我在.NET MVC视图中具有以下代码,该代码转到一种操作方法,该方法又下载了一个文件:

lazy val root = (project in file(".")).
  settings(
    inThisBuild(List(
      organization := "com.example",
      scalaVersion := "2.12.6",
      version      := "0.1.0-SNAPSHOT"
    )),
    name := "shapeless-validation",
    resolvers ++= Seq(
      Resolver.sonatypeRepo("releases")
    ),
    libraryDependencies ++= Seq(
      "com.chuusai"   %% "shapeless" % "2.3.3",
      "org.scalatest" %% "scalatest" % "3.0.5" % "test",
      "org.typelevel" %% "cats-core" % "1.1.0",
      "org.typelevel" %% "kittens"   % "1.1.0"
    )
  )

尽管这行得通,但我想知道JQuery中是否还有其他方法可以在其中报告可能遇到的任何错误。如果没有错误,它可以下载它,如果有错误,我会得到有关错误原因的信息。

我尝试使用.ajax get调用,但是它没有下载返回ajax调用的文件。

1 个答案:

答案 0 :(得分:0)

没问题!我不确定您如何尝试使用.ajax,但是以下方法应该可以工作:

将此添加到视图HTML:

<button type="button" id="GetFile">Get File!</button>

然后,在您的脚本中:

$('#GetFile').on('click', function () {
    $.ajax({
        url: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/172905/test.pdf',
        method: 'GET',
        xhrFields: {
            responseType: 'blob'
        },
        success: function (data) {
            var a = document.createElement('a');
            var url = window.URL.createObjectURL(data);
            a.href = url;
            a.download = 'myfile.pdf';
            a.click();
            window.URL.revokeObjectURL(url);
        },
        error: function(xhr, status, error) {
            // Handle error
        }
    });
});

祝你好运!