jQuery+ajax文件上传失败,什么原因?
html部分:
<h2>文件上传</h2>
<form id="up">
<input type="file" name="pic" class="pic" />
<input type="button" value="提交" class="sub" />
</form>
后端php部分:ajax.php
<?php
header("Content-Type: text/html;charset=utf8");
move_uploaded_file($_FILES["pic"]["tmp_name"],
"./" . "www.png");
?>
js部分,用js上传的时候是成功的,但用jquery的时候出现了两种错误:
一种是用$.ajax方法:
$(function(){
$(".sub").click(function(){
var fd=new FormData($("#up"));
$.ajax({
url: 'ajax.php' ,
type: 'POST',
data: fd,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata);
},
error: function (returndata) {
alert(returndata);
}
});
})
})
报错说找不到$_FILES里的pic,为什么呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
1. 使用 $.ajax 方法时出现错误,是因为这个地方搞定了,
需要写成:
具体可见:http://segmentfault.com/q/101...
和 http://segmentfault.com/a/119...
2. 用$.post方法的时候:
报错:Uncaught TypeError: Illegal invocation
原因是$.post其实是$.ajax的简写方式,不能设置更多的参数,不能直接发二进制文件,必须使用 $.ajax 方法像问题详情里那样写。
但如果说懒得用$.ajax的话,可以用FileReader读取文件的内容,为base64的数据,就可以直接用$.post来发给后端了,当然后端的处理方式会不太一样。
设置不对。
Ajax是不能上传附件的,如果需要上传附件请参考使用jQuery form插件
ajax只能传输文本流,不能运输二进制的文件。
可参考我写的关于FormData不刷新上传文件
FormData
ajax不能上传文件,还有form上传文件的enctype属性是要有的