jQuery表单上传错误

时间:2011-07-09 16:09:54

标签: asp.net-mvc-3 jquery-plugins

我正在使用此版本的jQuery表单插件https://raw.github.com/malsup/form/master/jquery.form.js 在提交时收到错误:

form.submit();

上的

错误

SCRIPT87: Invalid argument. jquery.form.js, line 347 character 5

我的代码:

<form id="ajaxUploadForm" action="@Url.Action("Upload", "Home")%>" method="post" enctype="multipart/form-data" >
    <fieldset>
        <legend>Upload a file</legend>
        <label>File to Upload: <input type="file" name="file" /></label>
        <input id="ajaxUploadButton" type="submit" value="Upload" />
    </fieldset>
</form> 

$(function () {
        $("#ajaxUploadForm").ajaxForm({
            iframe: true,
            dataType: "json",
            beforeSubmit: function () {
               // $("#ajaxUploadForm").block({ message: '<img src="/Content/themes/start/images/progress.gif" />' });
            },
            success: function (result) {
               // $("#ajaxUploadForm").unblock();
                //$("#ajaxUploadForm").resetForm();
                $.growlUI(null, result.message);
            },
            error: function (xhr, textStatus, errorThrown) {
                //$("#ajaxUploadForm").unblock();
                //$("#ajaxUploadForm").resetForm();
                $.growlUI(null, 'Error uploading file');
            }
        });
    });

我在侧面简单的模型对话框中进行上传。

可能有人可能有任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您要POST的控制器操作返回JSON,则可能需要将其包装在<textarea>标记中,如文档中所述:

  

由于无法上传   使用浏览器的文件   XMLHttpRequest对象,Form Plugin   使用隐藏的iframe元素来提供帮助   有了这个任务。这是常见的   技术,但它有固有的   限制。 iframe元素是   用作表格的目标   提交操作意味着   服务器响应写入   iframe中。如果回复,这很好   type是HTML或XML,但不起作用   如果响应类型是脚本也是如此   或JSON,两者都经常包含   需要重复的字符   找到时使用实体引用   HTML标记。

     

应对挑战   脚本和JSON响应,表单   插件允许这些响应   嵌入textarea元素和它   建议你这样做   这些响应类型在使用时   与文件上传相结合。请   但请注意,如果没有   然后在表单中输入文件   请求使用普通XHR提交   形式(不是iframe)。这就是   要知道你的服务器代码的负担   什么时候使用textarea而不是   至。如果你愿意,你可以使用   插件的iframe选项强制   它总是使用iframe模式和   然后你的服务器可以随时嵌入   在textarea回应。