h5学习笔记:FormData 练习

这几天看了一些h5的相关的资料。趁着今晚有点时间作一些小练习。前端里面有关FormData 接口和用法能够在这里进行获取。
https://developer.mozilla.org/zh-CN/docs/Web/API/FormDatajavascript

FormData 能够配合作图片的上传,结合ajax进行传输。在这里一个程序,会涉及到canvas的绘图和压缩,FileReader 读取图片的预览图片,还有Blob 的相关的配合。能够看到,单纯一个上传就能够集合了h5几个相关的搭配,写起来挺复杂的。php

预览图片css

<div>
		<input id="file" type="file"/>
	</div>	  
	<img id="preImg" />
	  
	  <script type="text/javascript">	  	 
	  	 var file = document.querySelector('#file');
	  	 file.addEventListener('change',onchange);
	  	 function onchange(e){
	  	    console.log(e);
	  	 	var file = e.currentTarget.files[0];
	  	 	var reader = new FileReader();
	  	 	reader.onload = function(evt) {
			    console.log(evt.target.result);
			    var preImg = document.querySelector('#preImg');
			    preImg.src = evt.target.result;
			};
			reader.readAsDataURL(file);
	  	 }
</script>

今晚作的一个小练习仅仅配合php一段小代码进行试验一下。首先先编写一段php代码。html

<?php
   header('Access-Control-Allow-Origin:*');
   $name = $_POST['name'];
   echo "Hello ".$name;
?>

这里php代码仅仅接收一个变量值,测试过程会产生跨域咱们设置一下接收任何来源的数据访问。让这个程序可以运做起来。前端

接下来,编写一个简单前端,界面仅仅只有一个按钮。html5

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>FormData测试</title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 
		<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
	</head>
	<body>
		<button id="sendBtn">发送数据</button>		
		<script type="text/javascript"> //发送数据 $(function(){ $('#sendBtn').click(function(){ sendData(); }) function sendData(){ var formData = new FormData(); formData.append('name','owen'); $.ajax({ url:'http://127.0.0.1/vivo/index.php', type:'POST', cache: false, processData: false, contentType: false, data:formData, success:function(res){ console.log(res); alert(res); } }); } }) </script>
		
	</body>
</html>

当2个代码准备就绪就能够开测。测试后,里面有一组比较有趣的数据。
contentType: false 则会根据实际状况请求返回。java

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 139
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySXaUO8txV8A0zIo1
Host: 127.0.0.1
Origin: http://127.0.0.1:9000
Referer: http://127.0.0.1:9000/phptool/example/fromdata%E6%B5%8B%E8%AF%95.html?__hbt=1585927430131
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1

传输过程当中Content-Type已经变成了multipart/form-data的表单方式。jquery

Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySXaUO8txV8A0zIo1

Referer 是来自不一样的跨域端口,这个能够看到它的来源web

http://127.0.0.1:9000

在这里插入图片描述

运行结构后,咱们能够返回一段 Hello owen的响应数据。
在这里插入图片描述ajax

这段html5和php很是简单,要写好其实不容易。只能分解其中过程去各个点学习。