FormData表单数据提交表单及上传图片详解


本文摘自PHP中文网,作者小云云,侵删。

在H5中利用FormData表单数据对象,可以把form表单中所有表单元素的name与value组成一个请求字符串,提交到后台。可通过js用一些键值对来模拟一系列表单控件,还可以使用XMLHttpRequest的send()方法异步提交表单。

1

2

3

4

5

6

7

8

9

10

11

12

13

<body>

    <p>

        <h2>无刷新方式收集表单数据</h2>

        <form>

            <p>用户名 : <input type="text" name="username" value="jnjk" /></p>

            <p>密 码 : <input type="password" name="password" value="123456" /></p>

            <p>邮 箱 : <input type="text" name="email" value="jnjk@qq.com" /></p>

            <p>头 像 : <input type="file" name="headimg" value="" /></p>

            <img src="" id="headimg" />

            <p style="text-align:center;"><input type="submit"  value="提交" /></p>

        </form>

    </p>

</body>


表单中有普通的text字符提交,也有file文件提交,使用FormData对象可以全部获取到表单域数据。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<script type="text/javascript">

    var fm = document.getElementsByTagName("form")[0];

    var himg = document.getElementById("headimg");

    fm.addEventListener("submit",function(e){

        //使用 FormData 表单数据对象,收集表单数据

        //var fdata = new FormData(fm); //收集fm的表单信息

        var fdata = new FormData(this); //收集fm的表单信息

         

        var xhr = new XMLHttpRequest();

        xhr.onreadystatechange = function(){

            if(xhr.readyState == 4 && xhr.status == 200){

                var msg = xhr.responseText;

                eval("var return_obj = "+msg);      //将返回的json字符串转化为对象

                console.log(return_obj);

                if(return_obj.status){

                    himg.setAttribute('src',return_obj.data.headimg);

                    himg.setAttribute('style','display:block');

                }else{

                    alert(return_obj.data);

                }

            }

        }

        xhr.open('post','data.php');

        xhr.send(fdata);

         

        e.preventDefault(); //阻止浏览器默认动作

    });

</script>


data.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

 

$data = $_POST;                 //普通表单域

$file = $_FILES['headimg'];     //文件上传

 

if($file['error'] > 0) exit(json_encode(array('status'=>0,'data'=>'文件异常')));

 

$save_path = './upload/'.date('Ymd').'/';

if(!is_dir($save_path)){

    mkdir(iconv("GBK","UTF-8",$save_path),0777,true);

}

$name = $file['name'];

 

$true_name = $save_path.$name;

$upres = move_uploaded_file($file['tmp_name'],$true_name);   //修改文件存储位置

if($upres){

    $data['headimg'] = $true_name;

    echo json_encode(array('status'=>1,'data'=>$data));

}else{

    echo json_encode(array('status'=>0,'data'=>'upload error'));

}


以上就是FormData表单数据提交表单及上传图片详解的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

FormData表单数据提交表单及上传图片详解

FormData表单数据提交表单及上传图片详解

更多相关阅读请进入《FormData》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...