window.location.href 能实现类型 ajax 的功能?

 $this.printAsset = function () {
    var selectedIds = selectedAssetIds();
    if (selectedIds.length == 0) {
        bootAlert('请选择资产');
        return false;
    }

    window.location.href = '/Asset/Print?ids=' + selectedAssetIds();
};

网上扒的一段代码,点击一个按钮后触发这个方法,之后会下载一个 excel 文件。

不太清楚的是:触发方法后,浏览器上面显示的地址没有改变成http://example.com/Asset/Print?ids=**,而且Chrome的network也没有监听到任何网络请求。一开始以为excel是纯前端生成的,但是直接在浏览器地址栏输入地址http://example.com/Asset/Print?ids=**,excel依然能够被下载。

很尷尬,很简单的问题,一下没想出来。应该是发送这个请求http://example.com/Asset/Print?ids=**后,后台经过处理返后回一个文件。也就变相的等于一个下载功能吧。
阅读 4k
4 个回答

能不能实现ajax不清楚,不过这个window.location.href = '/Asset/Print?ids=' + selectedAssetIds()相当于打开一个文件,而浏览器打开文件时候会进行下载。

这是相当于打开一个excel,然后自动下载。但是你并不能像ajax一样取到数据

这是后端实现的,这样window.location.href = '/Asset/Print?ids=' + selectedAssetIds();的代码相对于给后端发了一个get请求,后端返回了一个Excel文件的流

bootAlert('请选择资产');
        return false;

这里的return false导致下面的代码没有执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题