代码之家  ›  专栏  ›  技术社区  ›  Rawling isekaijin

使用JS禁用提交按钮后,在文件下载后重新启用

  •  1
  • Rawling isekaijin  · 技术社区  · 15 年前

    我在做一个ASP.NET应用程序。当前,当用户单击项目上的“保存”时,我们禁用保存按钮,将其文本更改为“保存…”等等。这可以很好地工作,因为按钮会导致回发,从而导致加载一个新页面,在该页面上不再禁用Save按钮。

    我们现在希望将此应用于其他操作:发布(与Save没有太大区别)、导入(同样,与Save很相似,但基于用户在上一步中上载的数据)、导出(将XML文件下载给用户)等。

    导出给我带来了问题-按钮一直处于禁用状态。我认为这是因为服务器发回一个XML文件而不是一个新的web页面,所以浏览器只显示同一个页面。

    服务器端代码与

    Response.Clear();
    Response.BufferOutput = true;
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + whatever);
    [push file contents into Response.OutputStream]
    Response.End();
    

    [不知道这是不是一个好代码-它不是我的-但它做的工作:)]

    基本上,我想知道:

    • 一种使服务器在响应中发送一个新的页面以及XML,从而以与其他页面相同的方式重新启用按钮的方法,或者
    • 一种让browser/JS在文件发送后重新启用按钮的方法。
    3 回复  |  直到 15 年前
        1
  •  1
  •   Rawling isekaijin    15 年前

    this 应该这样做:本质上,设置一个带有文件响应的cookie,并让浏览器等待该cookie以解除页面阻塞。

        2
  •  0
  •   David Mårtensson    15 年前

    由于内容处理是附加的,浏览器不会重新加载页面,而只会将服务器返回的内容保存到磁盘。

    你需要重新加载页面一些如何,但我没有真正好的艾达如何做后,一个文件提取。

        3
  •  0
  •   Sandeep Choudhary    8 年前

    btn.Attributes.Add添加(“onclick”这个。禁用了=“正确”;这个值='正在处理…';_doPostback(this,null);setTimeout(function(){enable button logic….设置按钮的文本/img},);');

    服务器端下载附件事件不会完全同步,但您可以根据服务器配置将超时设置为2-5秒。