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,为什么呢?
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来发给后端了,当然后端的处理方式会不太一样。