Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回mvc FileResult后需要javascript事件_Javascript_Asp.net Mvc 3_Dom Events - Fatal编程技术网

返回mvc FileResult后需要javascript事件

返回mvc FileResult后需要javascript事件,javascript,asp.net-mvc-3,dom-events,Javascript,Asp.net Mvc 3,Dom Events,我的应用程序执行form.submit()操作,该操作调用返回FileResult(附件)的操作。在提交之前,我有一个JavaScript,它会显示一个“请等待”div。当返回结果时,我需要清除它。对于返回写入页面的响应的操作,我使用window.onload事件清除div,但当返回附件时,该事件不会触发 像form.submit()这样的操作不起作用;HidePleaseWait(),因为提交是异步的。在返回附件时是否有其他触发的事件?或者,是否有某种方法可以组合多个ActionResult,

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

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

如果您正在使用,您应该执行以下操作

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

我知道这是一个老帖子,但我也有同样的需求,并找到了一些可能会在将来询问某人的东西

我在那里找到了解决方案:

我只需要添加
window.clearInterval(_tmr)
来停止每100毫秒一次的验证和
document.cookie='dlc=;expires=Thu,1970年1月1日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;
    }
}

在“完成时做什么”块中,我会做什么?我知道我可以隐藏我的pleasewait div,但我还必须处理附件响应。我知道如何处理“正常”的响应,例如,替换内容,但我不知道如何处理。如果您希望发送表单而不重新加载页面,您可以将其更改为AJAX调用。它避免了浏览器移动到操作地址。我认为你的回答不能解决我的问题,除非你能描述如何处理附件结果。成功(数据、文本状态、jqXHR)你可以接收数据并用jQuery处理它。只需将匿名函数更改为3个参数,似乎无法在ajax中处理附件(下载)响应。所以,不幸的是,我还是被卡住了。