javascript - 无法使用 jQuery 1.9.1 及更高版本进行 ajax 文件上传

标签 javascript jquery ajax

我有一个文件上传表单,可以使用生成的策略将目录上传到 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);
});

});

最佳答案

这似乎是 jquery 的一个错误,请参见此处:

http://bugs.jquery.com/ticket/13292

此错误已得到修复,因此它应该可以在最新版本的 jquery 上运行。

关于javascript - 无法使用 jQuery 1.9.1 及更高版本进行 ajax 文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166888/

相关文章:

javascript - Angular js 指令中的相同 "controller as"名称中断父 Controller 中的功能

javascript - 如何防止长按结束时发出点击声?

jQuery/CSS Gallery/Slideshow 如何限制缩略图滚动到可见区域

jQuery 切换仅在第一次有效

javascript - 使用 URL 获取 ClientContext

javascript - 为什么需要 JSON 对象序列化或者在 ajax 调用中发送到服务器很重要?

javascript - Socket.io-知道哪个房间的 socket 在哪

jQuery ajax 不适用于 JS 确认模式

jquery - 通过 AJAX 发送带有 HTML 评论的发布请求问题

javascript - ExtJS 4 - 访问 REST 代理和/或存储中的自定义响应 header ?