1

我无法让这个脚本工作。每次我发送文件时,脚本都需要执行一个 ajax 请求并将文件发送到服务器,但是,序列化总是发送空字符串。

我的 Javascript

$('#upload-button input:file').change(function() {
    $('#upload-text').text('Sending file...');

    $.ajax({
        type: "GET",
        url: "?url=images/send",
        data: $('#image-upload').serialize(),

        success: function(response) {
            if(response.error) {
                $('#upload-text').text(response.error);
            } else if(response.success) {
                $('#upload-text').text('Image send');
            }
        },
    });
})

我的 HTML

<form name="image-upload" id="image-upload" action="?url=imagens/enviar" method="post" enctype="multipart/form-data">
    <input type="file" name="selected-image" id="upload-hidden" value="" />
</form>

当我选择了一个文件时,结果来自alert($('#image-upload').serialize());

// EMPTY //

结果来自alert($('#image-upload input:file').attr('value'))

ponte-vecchio.jpg
4

3 回答 3

2

如果您想提交文件,则必须使用此处描述的 iframe-“解决方法” ,例如

对于您的问题,为什么 serialize 总是为空的,请查看jquery的来源。针对此正则表达式测试输入字段的类型

 /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i

如您所见,“文件”类型不是其中的一部分,因此 jquery 不会序列化此类输入字段。

于 2012-04-21T18:54:59.273 回答
1

结帐这个小提琴。它通过 jQuery 设置基本的 html 和 JS 以使用通过 iframe 上传。一种“异步”上传文件的好方法;)

于 2012-04-21T18:55:17.323 回答
1

使用jQuery 表单插件。它支持 HTML5 文件上传,如果浏览器太旧,它可以回退到隐藏的 iframe。

于 2012-04-21T19:03:38.050 回答