我有一个webservice给我发送一个excel文件,通过Ajax调用以下逻辑:


使用iframe下载到目前为止,唯一的方法是下载互联网浏览器,所以我想保留它。


这些是我的iframe和进度条:
&#xA;&#xA;< code>&lt; iframe width =“1”height =“1”style =“display:none”src =“{{downloadLink}}”&gt;&lt; / iframe&gt;&#xA;&#xA;&lt; progressbar class =“progress”value =“reportProgress”type =“success”&gt;&#xA; {{reportProgressL}}&#XA; &lt; / progressbar&gt;&#xA;&#xA;&#xA;
这是我的角度js程序:
&#xA;&#xA; $ scope.startDownload = function(){&#xA; $ scope.reportProgress = 0;&#xA; $ scope.reportProgressL =“0%”;&#xA;&#xA; var promise = $ http.get('/ myServiceCall / createFile');&#xA; promise.then(&#xA; function(payload){&#xA; console.log('success');&#xA; console.log(payload);&#xA;},&#xA; function(错误){&#xA; $ scope.showAlert('danger',error);&#xA;});&#xA;&#xA; $ scope.askProgress();&#xA;};&#xA;&#xA;&#xA; $ scope.askProgress = function(){&#xA; $ http.get('/ myServiceCall / progress')。success(function(response,status,headers,config){&#xA;&#xA; $ scope.reportProgress = response.data;&#xA; if(response) .data&lt; 100){&#xA; $ scope.reportProgressL = response.data +“%”;&#xA; $ timeout(function(){$ scope.askProgress();},1000);&#xA; } else {&#xA; console.log('服务器精化完成,下载应该很快开始...');&#xA; $ scope.reportProgressL =“完成!”;&#xA; $ scope.downloadLink =' / myServiceCall / getFile'; //设置src iframe属性:这将开始下载&#xA;}&#xA;})。error(function(err,status,headers,config){&#xA; alert('Error :'+ err +“”+ status);&#xA;});&#xA;};&#xA;
&#xA;&#xA; 以上代码工作正常......但只有一次!除非重新加载页面设置,否则“src”属性将不会执行任何操作。为什么
&#XA;答案 0 :(得分:1)
问题是,当您设置src
属性时,新值与旧值相同。浏览器未检测到它已更改,并且未重新加载iframe
。您应该尝试使用随机值设置?random=###
参数,以便属性更改。