【问题标题】:Need javascript event after returning mvc FileResult返回 mvc FileResult 后需要 javascript 事件
【发布时间】:2012-01-08 23:44:35
【问题描述】:

我的应用执行了一个 form.submit(),它调用了一个返回 FileResult(附件)的操作。在提交之前,我有 javacript 提出了一个“请稍候”的 div。返回结果时我需要清除它。对于返回写入页面的响应的操作,我使用 window.onload 事件来清除 div,但在返回附件时不会触发该事件。

form.submit();HidePleaseWait() 这样的操作是行不通的,因为提交是异步的。返回附件时是否会触发其他事件?或者,有什么方法可以组合多个 ActionResult 以便我可以在同一个响应中更新页面?

【问题讨论】:

    标签: javascript asp.net-mvc-3 dom-events


    【解决方案1】:

    如果您使用的是jQuery,您应该执行以下操作。

    $('selector').submit(function(event){
        event.preventDefault();
        // @Hiding
        // Do your AJAX call
        $.ajax({
            url: "test.html",
            success: function(){
                // @What to do when done
            }
        });
    });
    

    【讨论】:

    • 我会在“完成后做什么”块中做什么?我知道我可以隐藏我的 pleasewait div,但我还必须处理附件响应。我知道如何处理“正常”响应,例如替换内容,但我不知道如何处理。
    • 好吧,如果您想在不重新加载页面的情况下发送表单,您可以将其更改为 AJAX 调用。它避免了浏览器移动到操作地址。
    • 我不认为你的回答能解决我的问题,除非你能描述如何处理附件结果。
    • success(data, textStatus, jqXHR) 您可以接收数据并使用 jQuery 进行处理。只需将匿名函数更改为 3 个参数即可。
    • 似乎无法在 ajax 中处理附件(下载)响应。 [stackoverflow.com/questions/7464665/…。所以,不幸的是,我仍然卡住了。
    【解决方案2】:

    我知道这是一篇旧帖子,但我也有同样的需求,并且发现了一些将来可能会引起某人兴趣的东西。

    我在那里找到了解决方案:https://www.codeproject.com/Articles/1095434/Show-an-animation-while-waiting-for-a-download-to

    我只需要添加 window.clearInterval(_tmr) 来停止每 100 毫秒的验证,并添加 document.cookie = 'dlc= ; expires = Thu, 01 Jan 1970 00:00:00 GMT' 来清除 cookie。

    所以我的最终代码如下所示:

    var _tmr;
    
    $('form').submit(function () {
        if (!_tmr) {
            $('#cookieValue').val(Date.now().toString());
    
            _tmr = window.setInterval(VerifyEnd, 100);
        }
    });
    
    function VerifyEnd() {
        var _str = 'dlc=' + $('#cookieValue').val();
        if (document.cookie.indexOf(_str) !== -1) {
            $('body').removeClass("loading");
            window.clearInterval(_tmr);
            document.cookie = 'dlc= ; expires = Thu, 01 Jan 1970 00:00:00 GMT';
            _tmr = null;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多