【问题标题】:AjaxSubmit File Upload - Trying to get response $(document).ready() to fireAjaxSubmit 文件上传 - 试图让响应 $(document).ready() 触发
【发布时间】:2010-05-21 03:45:31
【问题描述】:

我正在使用 jquery 表单插件 (http://malsup.com/jquery/form/) 通过后台处理的 ajax 上传文件。

上传工作正常,我正在使用 ASP.Net MVC 返回一个包含 $(document).ready 调用的部分视图,以设置一个“计时器”来检查上传文件的处理状态。当我返回包含带有 $(document).ready 调用的脚本块的部分视图时,它永远不会被触发,因此检查上传状态的“计时器”永远不会启动。

当我通过常规 $.post 调用(不上传)执行此操作时,该函数会在 html 加载到 DOM 后正确触发。调用 ajaxSubmit 函数来触发它时,我还需要做些什么吗?

只是一个示例代码:

$('form').live('submit', function () {
                $(this).ajaxSubmit({                   
                    success: function (data) {                        
                        $('#statusDiv').html(data);                        
                    }
                });               
                return false;
            });

【问题讨论】:

    标签: jquery ajax jquery-forms-plugin


    【解决方案1】:

    您的 ASP.Net MVC 部分视图加载例程能否触发​​回调例程?您可以尝试在主文档的 ready() 处理程序中使用 .live() 观察绑定的自定义事件。然后在您的部分视图回调中.trigger('custom_event')。比如:

    $(document).ready( function(){
        $('container_for_partial_view').live('custom_event', function(){
            set_timer_and_do_stuff()
        }
    })
    

    ...当部分视图通过 ajax 加载时:

    $('container_for_partial_view etc etc').trigger('custom_event')
    

    【讨论】:

    • 这最终奏效了,尽管我希望有一个“更清洁”的解决方案。我不得不使用隐藏字段从部分视图中返回的 html 中提取一个值,但它起作用了。我想我试图在局部视图中添加更多的“逻辑”(javascript),但这可能都应该在最初加载的容器页面中完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多