jQuery serialize()总是空的

时间:2012-04-21 18:44:05

标签: javascript html

我无法使用此脚本。每次我发送文件脚本都需要做一个ajax请求并发送到服务器的文件,但是,serialize总是发送空字符串。

我的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

3 个答案:

答案 0 :(得分:2)

如果您想提交该文件,那么您必须使用here描述的iframe-“解决方法”,例如

对于您的问题,为什么序列化始终为空,请查看jquery的来源。根据此正则表达式测试输入字段的类型

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

正如您所看到的,“文件”类型不属于此类,因此jquery不会序列化此类输入字段。

答案 1 :(得分:1)

结帐fiddle。它通过jQuery设置基本的html和JS来使用iframe上传。 “异步”上传文件的好方法;)

答案 2 :(得分:1)

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