繁体   English   中英

仅当网络服务返回正确的内容时,如何开始从JavaScript下载浏览器文件

[英]How to start browser file download from javascript, only if a web service returned correct content

我需要构建一个JavaScript,该JavaScript在点击<a>元素时触发并调用对Web服务的GET调用(我也在对该服务进行编码)。 该服务应返回一个文件,并且只有在没有错误发生的情况下,才提供该文件供用户从浏览器下载,否则将其留在页面上,其他组件将在该页面上呈现错误。

我知道的方法是将<a>元素的“ href”属性设置为服务的URL。

由于我要为此开发的应用程序的具体细节,我没有返回错误,而是包含“ errorOccurred”内容的html(它也可能是具有相同内容的文件)。

因此,我的问题是:仅当检索到的文件内容正常时,才如何从javascript方法(我正在使用jQuery.ajax)开始下载文件。我已将<a>元素的onclick属性附加到文件中?

这里找到解决方案

我正在复制粘贴此处给出的代码:

var textToSave = 'this is a test';

var hiddenElement = document.createElement('a');

hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'myFile.txt';
hiddenElement.click();

尝试在HTML文档中搜索“ errorOccurred ”文本。

使用“ indexOf”方法查看字符串是否存在于返回的HTML中。

if(returnedText.indexOf('errorOccurred') > -1) {...code to download file}

好。 您可以控制该服务,因此,当服务失败时,不要返回带有文本错误消息的html,而应返回400类型错误。

然后在您的jQuery.ajax中执行以下操作:

jQuery.ajax {
    dataType:....
    url:...
    data:...
    success:...
    error: function(){
        alert('Your error message');
    }
}

如果在服务器端使用PHP,则可以使用以下命令生成400类型错误:

header('HTTP/1.1 404');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM