返回mvc FileResult后需要javascript事件

时间:2012-01-08 23:44:35

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

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

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

2 个答案:

答案 0 :(得分:1)

如果您使用jQuery,则应执行以下操作。

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

答案 1 :(得分:0)

我知道这是一篇过时的文章,但是我有同样的需求,并发现了将来可能会困扰某人的东西。

我在那里找到了解决方案: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;
    }
}