下面的代码执行此操作: 执行struts动作,修改服务器中的文件,然后下载文件 该文件已下载但不是该文件的最新版本
$("#generateButton").live("click",function(){
$.ajax({
type: "POST",
url: "../generateBlame.do",
data: { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" }
});
$.fileDownload('http://localhost:8080/gestionRH/fiches/decision de blame.doc');
});
获取更新文件的任何方式?
答案 0 :(得分:3)
更新完成后开始下载操作(在success
回调ajax请求时)
$("#generateButton").live("click",function(){
$.ajax({
type : "POST",
url : "../generateBlame.do",
data : { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" },
success : function() {
$.fileDownload('http://localhost:8080/.../decision de blame.doc');
}
});
});
答案 1 :(得分:2)
假设generateBlame.do
请求是在指定路径上创建文件的内容,您需要将$.fileDownload
方法调用放在请求的success
处理程序中 - 因为请求是异步制作。
试试这个:
$("#generateButton").live("click",function(){
$.ajax({
type: "POST",
url: "../generateBlame.do",
data: { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" },
success: function() {
$.fileDownload('http://localhost:8080/gestionRH/fiches/decision de blame.doc');
},
error(xhr, status, error) {
alert("File generation failed - " + error);
}
});
});
答案 2 :(得分:0)
可能问题是由于服务器需要一些时间来刷新其资源;所以为了解决这个问题,我强迫一段时间后触发下载事件 这是代码
function timeout_trigger() {
$.fileDownload('path_to_file');
$('#loading').hide();
$('#generateButton').button({ disabled: false });
}
$("#generateButton").live("click",function(){
$('#generateButton').button({ disabled: true });
$('#loading').show();
$.post(
'../generateBlame.do',
{ fileName: "blame", nbrParam: "2",param1 :"pop",param2:"lll" },
function(data) {
setTimeout('timeout_trigger()',5000);
});
});
这是有效的,但我更喜欢以更聪明的方式做到这一点 有什么建议 ? 有一个更新服务器的方法吗?