ajax不通过页面表单来上传图片,通过js的FormData

关键代码

取input框里面的文件需要通过$("input[type='file']")[0].files[0]来获取  (这是jquery获取方法)

原生js获取方法是

var file = document.querySelector('input[type=file]').files[0];//IE10以下不支持
 注意上传文件必须添加
         processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理
		 contentType : false, // 不设置Content-type请求头
				
 
	//$(this).prev()[0] --->jquery对象转dom对象
			var file=$(this).prev()[0].files[0];
			var id=$(this).next().val();
			var form = new FormData();
			form.append('file', file);//上传的文件: 键名,键值
			form.append('id', id);//用户id
			$.ajax({
				type:'post',
				url:"file/uploadFile",
				data:form,
				async: true,//默认true,false同步提交
				processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理
		        contentType : false, // 不设置Content-type请求头
				success:function(data){
					alert("上传成功");
				}
			});

 完整代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-2.1.1.js"></script>
<script type="text/javascript">
	$(function(){
		$(".upload").click(function(){
			//$(this).prev()[0] --->jquery对象转dom对象
			var file=$(this).prev()[0].files[0];
			var id=$(this).next().val();
			var form = new FormData();
			form.append('file', file);//上传的文件: 键名,键值
			form.append('id', id);//用户id
			$.ajax({
				type:'post',
				url:"file/uploadFile",
				data:form,
				async: true,//默认true,false同步提交
				processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理
		        contentType : false, // 不设置Content-type请求头
				success:function(data){
					alert("上传成功");
				}
			});
		});
	})
</script>
</head>
<body>
	<table>
		<tr>
			<td>序号</td>
			<td>用户名</td>
			<td>头像</td>
			<td>操作</td>
		</tr>
		<c:forEach items="${list }" var="user" varStatus="vs">
			<tr>
			<td>${vs.index+1 }</td>
			<td>${user.name }</td>
			<td>
			<c:if test="${user.img !=null }">
				<img alt="" src="${user.img}">
			</c:if>
			</td>
			<td>
			<input type="file" name="file">
			<a href="#" class="upload">上传图片</a>
			<input type="hidden" value="${user.id}">
			</td>
		</tr>
		</c:forEach>
	</table>
</body>
</html>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过ajax提交form表单数据到php可以实现页面无需刷新即可提交数据,并且可以异步处理服务器的响应。 首先,需要在HTML中引入jQuery或其他的ajax库,以方便使用ajax函数。然后,在form表单的提交事件中使用ajax函数来处理提交。 具实现步骤如下: 1. 编写HTML表单代码,包含需要提交的各种输入字段和一个提交按钮。 2. 使用JavaScript/jQuery监听表单的提交事件: ```javascript $('#form_id').submit(function(event) { event.preventDefault(); // 阻止表单的默认提交动作 // 获取表单数据 var formData = $(this).serialize(); // 发送ajax请求 $.ajax({ url: '处理数据的php文件路径', type: 'POST', data: formData, success: function(response) { // 响应成功时的操作 }, error: function(xhr, status, error) { // 响应失败时的操作 } }); }); ``` 其中,`form_id`是表单的ID,`处理数据的php文件路径`是处理提交数据的服务器端脚本文件路径。 3. 在服务器端的PHP脚本中,使用`$_POST`超全局数组来获取通过ajax提交的表单数据,进行相应的处理,然后返回处理结果给前端。 ```php <?php // 获取表单数据 $data1 = $_POST['input1_name']; $data2 = $_POST['input2_name']; // 进行数据处理或其他操作 //... // 返回处理结果给前端 echo $result; ?> ``` 以上就是通过ajax提交form表单数据到PHP的简单实现过程。通过这种方式,可以实现页面的异步提交,并在不刷新页面的情况下与服务器进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值