iframe模拟Ajax文件上传效果
分析:
1:捕捉表单提交的动作
2:创建一个iframe
3:把表单的 target修改 指向 该iframe
4:去掉这个iframe
<div id="progress"></div>
<form action="up.php" method="post" enctype="multipart/form-data" onsubmit="return ajaxup();">
<input type="file" name="pic">
<input type="submit" value="提交">
</form>
<script>
function ajaxup() {
var ifname = 'up' + Math.random();
$('<iframe name="' + ifname + '" width="0" height="0" frameBorder="0"></iframe>').appendTo($('body'));
$('form:first').attr('target', ifname);
$('#progress').html('<img src="./loading.gif" />');
}
</script>
sleep(3);
if(empty($_FILES)) {
exit('no file');
}
$msg = $_FILES['pic']['error']==0 ? 'succ' : 'fail';
echo "<script>parent.document.getElementById('progress').innerHTML = '$msg'</script>";
formData发送数据
formData "表单数据"对象,这是在html5中新增的一个Api。
他能以表单对象做参数,自动的把表单的数据打包.
当ajax发送数据时,发送些formData,达到发送表单内各数据项的目的。
// 02-testpost.php
print_r($_POST);
<form id="tform">
用户名:<input type="text" name="username"><br>
年 龄:<input type="text" name="age"><br>
email:<input type="text" name="email"><br>
性 别:<input type="text" name="gender"><br>
<input type="button" value="ajax发送" onclick="send();">
</form>
<div id="debug"></div>
<script type="text/javascript">
function send() {
var fm = document.getElementById('tform');
var fd = new FormData(fm);
var xhr =