ajax-form表单快速传递参数

serialize()方法 序列化表单内容为字符串,用于Ajax请求
当表单中要提交的参数比较多时,就可以使用该方法进行提交当表单中要提交的参数比较多时,就可以使用该方法进行提交
function update_PTInfo() {
	var formatter = $("#update_frm").serialize();
	$.ajax({
		type: "POST",
		url: "/pt-sts/updateUserInfo",
		data: formatter,
		dataType: "json",
		success: function(result){
			console.log(result.msg);
			console.log(result);
		}
	});
};
方法一:controller后台接受,和普通接受参数一样
异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。
//修改个人信息
@ResponseBody
@RequestMapping(value = "updateUserInfo")
public Map<String, Object> updateUserInfo(User user,HttpServletRequest request){
	Map<String,Object> resultMap = new HashMap<>();
	String user_name = request.getParameter("user_name");
	String user_sex = request.getParameter("user_sex");
	System.out.println("账号=="+user_name);
	System.out.println("单选框=="+user_sex);
	System.out.println("当前对象:"+user);
	resultMap.put("code",001);
	resultMap.put("msg","SUCCESS");
	resultMap.put("data",user);
	return resultMap;
}
方法二:另外一种写法
JSON.toJSONString是将对象转化为Json字符串返回
//修改个人信息
@ResponseBody
@RequestMapping(value = "updateUserInfo")
public String updateUserInfo(User user,HttpServletRequest request){
	Map<String,Object> resultMap = new HashMap<>();
	String user_name = request.getParameter("user_name");
	String user_sex = request.getParameter("user_sex");
	System.out.println("账号=="+user_name);
	System.out.println("单选框=="+user_sex);
	System.out.println("当前对象:"+user);
	resultMap.put("code",001);
	resultMap.put("msg","SUCCESS");
	resultMap.put("data",user);
	return JSON.toJSONString(resultMap); //将对象转化为json字符串
}
查看控制台信息,都是同样的效果


方法一和二 :ajax发送请求时,没有写dataType: “json”,预期服务器返回的数据类型
 function update_PTInfo() {
	 var formatter = $("#update_frm").serialize();
	 $.ajax({
		 type: "POST",
		 url: "/pt-sts/updateUserInfo",
		 data: formatter,
		 //dataType: "json", //没有预期指定服务端返回数据格式
		 success: function(result){
			 console.log(result.msg);
			 console.log(result);
		 }
	 });
 };
我们再请求同样的地址,查看控制台会发现,方法一正常,方法二取不到单个值了


console.log(result.msg);//取不到值了
这时候怎么做呢?

jQuery.parseJSON()函数 将格式完好的JSON字符串转为与之对应的JavaScript对象:所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式。将方法二ajax改为如下,即可正常处理json。

function update_PTInfo() {
	var formatter = $("#update_frm").serialize();
	$.ajax({
		type: "POST",
		url: "/pt-sts/updateUserInfo",
		data: formatter,
		//dataType: "json",
		success: function(result){
			var res = $.parseJSON(result);  //用jQuery处理传过来的json值
			console.log(res.msg);
			console.log(res);
		}
	});
};
综上两种方法的注意点,区别,方法一明显写法更简单。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
解决enctype= multipart/form-data无法传递其他参数的方法有多种。 一种常见的解决方法是使用一个隐藏的字段将额外的参数传递到服务器端。在form标签中添加一个隐藏的input标签,将需要传递参数作为该字段的值。在提交时,该参数会随着文件一起被发送到服务器端。 另一种方法是使用JavaScript来动态地修改的action属性,并将额外的参数作为查询字符串添加到action中。当用户点击提交按钮时,JavaScript会通过监听的提交事件,在提交之前修改action属性并将额外参数添加到其中。这样,提交时就会将所有参数一起发送到服务器端。 如果使用的是Ajax来提交,可以将其他参数组成一个对象,然后使用FormData对象来存储文件和其他参数。FormData对象可以通过append()方法将文件和其他参数添加到其中,然后通过XmlHttpRequest对象将FormData对象发送到服务器端。 还有一种解决方法是使用服务器端的处理程序来解析multipart/form-data类型的请求,然后从请求体中解析出文件和其他参数。可以根据服务器端的开发语言和框架来选择合适的处理程序,例如在PHP中可以使用$_FILES数组来获取文件,使用$_POST数组来获取其他参数。 综上所述,通过隐藏字段、JavaScript、FormData对象或服务器端的处理程序,都可以实现在enctype= multipart/form-data类型的传递其他参数。选择哪种方法取决于具体的需求和技术环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DT辰白

你的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值