我无法使用此脚本。每次我发送文件脚本都需要做一个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
答案 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。