整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用FormData无刷新表单信息提交

使用FormData无刷新表单信息提交

用新技术FormData表单数据对象, 可以实现快速收集表单信息。

FormData是html5的新技术, 在主流浏览器(IE10以上版本支持)都可以正常使用。

<html>
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">
window.onload=function(){
    var fm=document.getElementsByTagName('form')[0];
    fm.onsubmit=function(evt){
    //ajax+dom无刷新获得表单信息并传递给服务器
    //① 获得表单信息
    //利用javascript提供的新技术快速、简单地收集全部的表单域信息
    //FormData() 表单数据对象可以帮我们完成此需求
    var fd=new FormData(fm);//收集fm元素节点内部的表单域信息
    //也可写成var fd=new FormData(this);
    //fd里边有我们收集到的全部的表单域信息
    //② ajax传递表单信息
    var xhr=new XMLHttpRequest();
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4 && xhr.status==200){
            alert(xhr.responseText);
        }
    }
    xhr.open('post','./04.php');
    //xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    xhr.send(fd);
    //event.returnValue=false; //IE6 7 8
    evt.preventDefault();//浏览器进制跳转 主流浏览器
    }
}
</script>
</head>
<body>
<h2>无刷新form表单提交(FormData)</h2>
<form method="post" >
<p>用户名:<input type="text" name="username" id="mingzi"></p>
<p>密码:<input type="password" name="userpwd" id="mima"></p>
<p>邮箱:<input type="text" name="useremail" id="youxiang"></p>
<p><input type="submit" value="注册"></p>
</form>
</body>
</html>
<?php
//获得传递过来的post格式信息
print_r($_POST);
?>

注意:FormData使用

1 ajax不要设置header头

2 form表单域必须有name属性

3 IE10以上版本支持FormData, IE9不支持

TML5实现头像的上传

这是利用form-data给后台传输数据,来实现头像的上传加载!

  1. html代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    </head>
<body>
    <div class="container">
        <input enctype="multipart/form-data" type="file">
        <input id="Susername"  type="text" placeholder="用户名">
        <input id="Ssex" type="number" placeholder="年龄">
        <input id="Sage" type="text" placeholder="专业">
        <input id="Smajor" type="text" placeholder="学校">
        <input id="Sschool" type="text" placeholder="QQ">
        <input id="Sqq" type="text" placeholder="地址">
        <input id="Saddress" type="text" placeholder="座右铭">
        <input id="Smotto" type="button" value="上传">
       
        <div style="clear: both;"></div>
             <progress value="0" max="100"></progress>
    </div>
    <div class="showarea">
        <h3>显示区域</h3>
    </div>
    </body>
</html>
  1. 样式代码
 .container{
            box-sizing: border-box;
            width: 404px;
            height: 100px;
            border: 1px solid #ccc;
            border-radius: 5px;
            padding-top: 20px;
            background: linear-gradient(to bottom,#0ff,#0ff 20px,transparent 0);
            margin: 0 auto;
        }
        input{
            padding: 0;
            margin: 0;
          
        }
        .container input[type=file]{
            width: 300px;
            height: 30px;
            border: 1px solid #ccc;
            background: #7FFFD4;
            color: #133131;
            float: left;
        }
        .container input[typr=button]{
            width: 100px;
            height: 32px;
            float: left;
            border: 1px solid #ccc;
            color:  #133131;
        }
        progress{
            display: none;
            width: 400px;
            height: 30px;
            margin-top: 7px;
        }
        .showarea{
            width: 600px;
            min-height: 200px;
            border: 1px solid #ccc;
            margin: 30px auto;
        }
        .showarea h3{
            widows: 100px;
            margin: 0 auto;
            line-height: 60px;
            text-align: center;
            border-bottom: 1px solid #cccc;
            color: #133131;
            
        }
        .showareaimg{
            max-width: 1000%;
        }
  1. javescript代码

先简单了解一下 FormData,点击链接:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects

IE浏览器版本最好为:IE10+,因为 FormData 兼容性问题

然后查看示例,代码如下↓

html 代码:


  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
  7. <style type="text/css">
  8. #showimg{margin-top: 20px;height: 150px;}
  9. #showimg div{width: 100px;height: 100px;line-height:100px;margin-right: 20px;float: left;text-align: center;}
  10. #showimg img{vertical-align: middle;max-width: 100%;max-height: 100%;}
  11. </style>
  12. <script type="text/javascript">
  13. jQuery(function () {
  14. jQuery('#butSubmit').click(function () {
  15. var file=jQuery('#fileId')[0].files;
  16. var formDataInfo=new FormData(jQuery('#FormDataUpload')[0]);
  17. formDataInfo.append('file',file);//表单数据
  18. formDataInfo.append('ajajxfile', 1);//额外加数据
  19. /*------分割线------*/
  20. // var formDataInfo=new FormData();
  21. // formDataInfo.append('pic', jQuery("#picId")[0].files[0]);
  22. // formDataInfo.append('ajajxfile', 1);//额外加数据
  23. //jQuery.each(jQuery("#fileId")[0].files,function (k,val) {
  24. // formDataInfo.append('fileimg[]', val);
  25. // });
  26. // alert(formData);
  27. jQuery.ajax({
  28. type:'post',
  29. url:'upload.php',
  30. dataType:'json',
  31. cache:false,
  32. processData:false,//必须
  33. contentType:false,//必须
  34. data:formDataInfo,
  35. success:function (data) {
  36. // alert(data);
  37. var html='';
  38. for (var i=0;i<data.length;i++){
  39. html +='<div><img src="'+data[i]+'"></div>';
  40. }
  41. jQuery('#showimg').html(html);
  42. },
  43. error:function () {
  44. alert('Error');
  45. }
  46. });
  47. });
  48. });
  49. </script>
  50. </head>
  51. <body>
  52. <br>
  53. <form id="FormDataUpload" action="upload.php" method="post" enctype="multipart/form-data">
  54. <input name="img[]" type="file" id="fileId" multiple>
  55. <!--<input name="picId" type="file" id="picId">-->
  56. <input type="button" value="提交" id="butSubmit">
  57. <!-- <input type="submit" name="dosubmit" value="提交Form">-->
  58. </form>
  59. <div id="showimg"></div>
  60. </body>
  61. </html>

后台程序 PHP代码:


  1. <?php
  2. date_default_timezone_set('PRC');
  3. if (!empty($_POST)){
  4. if ($_FILES['img']['name'][0]){
  5. $path='upload/';
  6. if (!is_dir($path)){
  7. mkdir(iconv("UTF-8", "GBK", $path),0777,true);
  8. }
  9. $datafile=$_FILES['img'];
  10. $filearr=array();
  11. foreach ($datafile['name'] as $key=>$value){
  12. $type=pathinfo($value);
  13. $filename=$path.time().mt_rand(0,999999999).'.'.$type['extension'];
  14. if (move_uploaded_file($datafile['tmp_name'][$key],$filename)){
  15. $filearr[]=$filename;
  16. }
  17. }
  18. print_r(json_encode($filearr));die;
  19. }
  20. }

一个简单的ajax上传文件,欢迎广大朋友们一起来学习!