jQuery Ajax文件上传

我可以使用下面的jQuery代码,使用ajax请求的POST方法执行文件上传吗?

$.ajax({
    type: "POST",
    timeout: 50000,
    url: url,
    data: dataString,
    success: function (data) {
        alert('success');
        return false;
    }
});

如果可以的话,我是否需要填写data部分?这是正确的方法吗?我只把文件POST到服务器端。

我一直在搜索,但我发现的是一个插件,而在我的计划中我不想使用它。至少目前是这样。

解决办法

文件上传不是通过Ajax实现的。 你可以在不刷新页面的情况下,通过使用IFrame上传文件。 你可以查看进一步的细节这里

更新:

在XHR2中,支持通过AJAX上传文件。例如,通过FormData对象,但不幸的是,它不被所有/旧的浏览器支持。

FormData支持从以下桌面浏览器版本开始。 IE 10以上。 Firefox 4.0以上。 Chrome 7以上。 Safari 5+, Opera 12以上

更多细节,见MDN链接

评论(9)

使用XMLHttpRequest()确实可以实现AJAX上传。没有必要使用iframes。可以显示上传进度。

详见。答案https://stackoverflow.com/a/4943774/873282,问题https://stackoverflow.com/questions/4856917/jquery-upload-progress-and-ajax-file-upload。

评论(1)
  • 使用一个隐藏的iframe,并将你的表单目标设置为该iframe的名称。 这样,当表单被提交时,只有iframe会被刷新。
  • 为iframe的加载事件注册一个事件处理程序以解析响应。

更多细节请见我的博文:http://blog.manki.in/2011/08/ajax-fie-upload.html

评论(2)