1

我正在尝试使用以下插件使用 AJAX 导入文件 -

http://malsup.github.com/jquery.form.js

基于以下示例 -

http://malsup.com/jquery/form/progress.html

我的视图看起来像这样 -

<form action="/MyController/MyAction" enctype="multipart/form-data" id="myFormId" method="post">        
    <input type="file" name="file" id="file">
    <input type="submit" value="Import File"> </div>
</form>
<script type="text/javascript">
    window.onload = function () {
        (function () {
            $('#myFormId').ajaxForm({
                beforeSend: function () {
                    alert('before send');

                },
                success: function () {
                    alert('success');
                },
                complete: function (xhr) {

                    alert('xhr.responseText=' + xhr.responseText);
                }
            });

        })();
    }
</script>

window.onload = function (){}永远不会调用其中的 javacsript 。MyAction被调用,然后浏览器只显示MyAction.

谁能告诉我我做错了什么或建议一种不同的方法?非常感谢!

4

1 回答 1

3

由于您编写的脚本放置在表单之后,因此您无需将其放入window.onload处理程序中。以下应该可以正常工作:

@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { enctype = "multipart/form-data", id = "myFormId" }))
{
    <input type="file" name="file" id="file">
    <input type="submit" value="Import File"> </div>
}

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
    (function ($) {
        $('#myFormId').ajaxForm({
            beforeSend: function () {
                alert('before send');
            },
            success: function () {
                alert('success');
            },
            complete: function (xhr) {
                alert('xhr.responseText=' + xhr.responseText);
            }
        });
    })(jQuery);
</script>

另请注意,确保 jquery.js 包含在 jquery.form.js 插件之前很重要,该插件需要在使用它的脚本之前包含。在我展示的示例中,我还将 jQuery 作为参数传递给正在使用的匿名函数,以确保与您可能正在使用的其他插件没有冲突,并且可能劫持了该$函数。

此外,我建议您使用 javascript 调试工具,例如 FireBug 或 Chrome 开发人员工具栏,以确保正确包含所有脚本(无 404)并且您没有任何重复的脚本或 javascript 错误。

于 2013-04-07T16:29:39.097 回答