我有一个文件上传表单,使用生成的策略将目录上传到Amazon S3。使用jQuery< = 1.9.0可以正常工作,但在1.9.1及更高版本中已经破解,我无法弄清楚原因。使用1.9.0,它返回“成功”状态,数据对象就在那里。使用1.9.1,它立即返回'nocontent' - 状态代码为204,数据对象未定义。这是1.9.1的更改日志 - 有关于序列化表单的内容,但阅读它并没有点击我的任何内容。 http://blog.jquery.com/2013/02/04/jquery-1-9-1-released/
以下是表单的基础知识:
$('.inputFile').on('change', function () {
var data = new FormData();
var t = $('#uploads');
var r;
$('.fileupload').spin({ left: '120px', lines: 8, length: 4, width: 3, radius: 5, top: '5px' });
requestCredentials = function(file) {
$.ajax({
url: "/image/policy?file=" + file.name,
dataType: "JSON",
success: function(res) {
data.append('key', res.key);
data.append('bucket', res.bucket);
data.append('AWSAccessKeyId', res.aws_key);
data.append('acl', res.acl);
data.append('success_action_redirect', res.redirect);
data.append('Content-Type', res.content_type);
data.append('policy', res.policy);
data.append('signature', res.signature);
data.append('file', file);
$.ajax({
url: res.endpoint,
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data, status, xhr) {
console.log('I am jquery 1.9.0');
},
error: function(xhr, status, err) {
console.log('I am jquery 1.9.1');
}
});
},
error: function(res, status, error) {
console.log('Whoops');
}
});
};
$.each($(this).get(0).files, function(i, file) {
requestCredentials(file);
});
});
答案 0 :(得分:0)