首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery serialize()始终为空

jQuery serialize()始终为空
EN

Stack Overflow用户
提问于 2012-04-22 02:44:05
回答 3查看 1K关注 0票数 1

我不能让这个脚本工作。每次我发送一个文件,脚本需要做一个ajax请求并发送到服务器,但是,serialize总是发送空字符串。

我的Javascript

代码语言: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

代码语言:javascript
复制
<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());

代码语言:javascript
复制
// EMPTY //

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

代码语言:javascript
复制
ponte-vecchio.jpg
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-22 03:03:38

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-22 02:54:59

如果你想提交文件,那么你必须使用iframe-“变通办法”描述的here,例如

对于您的问题,为什么serialize总是空的请看一下jquery的源代码。输入字段的类型将根据此正则表达式进行测试

代码语言:javascript
复制
 /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i

正如您所看到的,"file“类型不是其中的一部分,因此jquery不会序列化这种输入字段。

票数 2
EN

Stack Overflow用户

发布于 2012-04-22 02:55:17

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10261888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档