使用FormData对象上传

FormData 对象,可以把form中所有表单元素的name与value组成一个queryString,提交到后台。在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。


使用FormData对象

1.创建一个FormData空对象,然后使用append方法添加key/value

[javascript] view plain copy print?

  1. var formdata = new FormData();  

  2. formdata.append('name','fdipzone');  

  3. formdata.append('gender','male');  

var formdata = new FormData();
formdata.append('name','fdipzone');
formdata.append('gender','male');


2.取得form对象,作为参数传入到FormData对象

[html] view plain copy print?

  1. <form name="form1" id="form1">  

  2. <input type="text" name="name" value="fdipzone">  

  3. <input type="text" name="gender" value="male">  

  4. </form>  

<form name="form1" id="form1">
<input type="text" name="name" value="fdipzone">
<input type="text" name="gender" value="male">
</form>

[javascript] view plain copy print?

  1. var form = document.getElementById('form1');  

  2. var formdata = new FormData(form);  

var form = document.getElementById('form1');
var formdata = new FormData(form);


使用FormData提交表单及上传文件:

[html] view plain copy print?

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  

  2. <html>  

  3.  <head>  

  4.   <meta http-equiv="content-type" content="text/html; charset=utf-8">  

  5.   <title> FormData Demo </title>  

  6.   <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>  

  7.   

  8.   <script type="text/javascript">  

  9.   <!--  

  10.     function fsubmit(){  

  11.         var data = new FormData($('#form1')[0]);  

  12.         $.ajax({  

  13.             url: 'server.php',  

  14.             type: 'POST',  

  15.             data: data,  

  16.             dataType: 'JSON',  

  17.             cache: false,  

  18.             processData: false,  

  19.             contentType: false  

  20.         }).done(function(ret){  

  21.             if(ret['isSuccess']){  

  22.                 var result = '';  

  23.                 result += 'name=' + ret['name'] + '<br>';  

  24.                 result += 'gender=' + ret['gender'] + '<br>';  

  25.                 result += '<img src="' + ret['photo']  + '" width="100">';  

  26.                 $('#result').html(result);  

  27.             }else{  

  28.                 alert('提交失敗');  

  29.             }  

  30.         });  

  31.         return false;  

  32.     }  

  33.   -->  

  34.   </script>  

  35.   

  36.  </head>  

  37.   

  38.  <body>  

  39.     <form name="form1" id="form1">  

  40.         <p>name:<input type="text" name="name" ></p>  

  41.         <p>gender:<input type="radio" name="gender" value="1">male <input type="radio" name="gender" value="2">female</p>  

  42.         <p>photo:<input type="file" name="photo" id="photo"></p>  

  43.         <p><input type="button" name="b1" value="submit" onclick="fsubmit()"></p>  

  44.     </form>  

  45.     <div id="result"></div>  

  46.  </body>  

  47. </html>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title> FormData Demo </title>
  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

  <script type="text/javascript">
  <!--
    function fsubmit(){
        var data = new FormData($('#form1')[0]);
        $.ajax({
            url: 'server.php',
            type: 'POST',
            data: data,
            dataType: 'JSON',
            cache: false,
            processData: false,
            contentType: false
        }).done(function(ret){
            if(ret['isSuccess']){
                var result = '';
                result += 'name=' + ret['name'] + '<br>';
                result += 'gender=' + ret['gender'] + '<br>';
                result += '<img src="' + ret['photo']  + '" width="100">';
                $('#result').html(result);
            }else{
                alert('提交失敗');
            }
        });
        return false;
    }
  -->
  </script>

 </head>

 <body>
    <form name="form1" id="form1">
        <p>name:<input type="text" name="name" ></p>
        <p>gender:<input type="radio" name="gender" value="1">male <input type="radio" name="gender" value="2">female</p>
        <p>photo:<input type="file" name="photo" id="photo"></p>
        <p><input type="button" name="b1" value="submit" onclick="fsubmit()"></p>
    </form>
    <div id="result"></div>
 </body>
</html>


server.php

[php] view plain copy print?

  1. <?php  

  2. $name = isset($_POST['name'])? $_POST['name'] : '';  

  3. $gender = isset($_POST['gender'])? $_POST['gender'] : '';  

  4.   

  5. $filename = time().substr($_FILES['photo']['name'], strrpos($_FILES['photo']['name'],'.'));  

  6.   

  7. $response = array();  

  8.   

  9. if(move_uploaded_file($_FILES['photo']['tmp_name'], $filename)){  

  10.     $response['isSuccess'] = true;  

  11.     $response['name'] = $name;  

  12.     $response['gender'] = $gender;  

  13.     $response['photo'] = $filename;  

  14. }else{  

  15.     $response['isSuccess'] = false;  

  16. }  

  17.   

  18. echo json_encode($response);  

  19. ?>  



转载于:https://my.oschina.net/Tright/blog/662829

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值