FormData表單數據提交表單及上傳圖片詳解

在H5中利用FormData表單數據對象,可以把form表單中所有表單元素的name與value組成一個請求字符串,提交到后臺。可通過js用一些鍵值對來模擬一系列表單控件,還可以使用XMLHttpRequest的send()方法異步提交表單。

  	<p>  		</p><h2>無刷新方式收集表單數據</h2>  		

用戶名?:?

密?碼?:?

郵?箱?:?

頭?像?:?

@@##@@

表單中有普通的text字符提交,也有file文件提交,使用FormData對象可以全部獲取到表單域數據。

<script>  	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(&#39;src&#39;,return_obj.data.headimg);  					himg.setAttribute(&#39;style&#39;,&#39;display:block&#39;);  				}else{  					alert(return_obj.data);  				}  			}  		}  		xhr.open(&#39;post&#39;,&#39;data.php&#39;);  		xhr.send(fdata);  		  		e.preventDefault();	//阻止瀏覽器默認動作  	});  </script>

data.php

<?php $data = $_POST;					//普通表單域  $file = $_FILES[&#39;headimg&#39;];		//文件上傳    if($file[&#39;error&#39;] >?0)?exit(json_encode(array('status'=&gt;0,'data'=&gt;'文件異常')));    $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'=&gt;1,'data'=&gt;$data));  }else{  	echo?json_encode(array('status'=&gt;0,'data'=&gt;'upload?error'));  }

FormData表單數據提交表單及上傳圖片詳解

FormData表單數據提交表單及上傳圖片詳解

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享