0

下面的代码执行此操作:执行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');
});

有什么方法可以获取更新的文件?

4

3 回答 3

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');
       }

    });

});
于 2012-09-05T12:18:35.360 回答
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);
        }
    });
});
于 2012-09-05T12:20:04.763 回答
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);             
});
});

这是工作,但我更喜欢以更聪明的方式做任何建议?有什么方法可以刷新服务器吗?

于 2012-09-05T16:11:36.667 回答