天天看点

【成功例子】将form表单转化为JSON字符串,通过ajax发送到后台将表单转化为JSON字符串

将表单转化为JSON字符串

  1. 准备材料
  2. 前端编写

1.准备材料

我用的是jquery-3.3.1.min.js的本地包,也可以用网络CDN,但有时候网络上的CDN会没有响应,具体的可以看浏览器的调试信息。运行环境是STS。

2.前端编写

这里以一个小的登录功能为例子,代码如下:

script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">

$(function()
		{
			$("#bt1").click( function()
								{
									login();
								}
							);

		})

/*登录  */
function login()
{ 
	var LoginData = $("#loginform").serializeArray();
	var LoginPram = {};		

	for(var i =0;i<LoginData.length;i++)
		 {
		 	LoginPram[LoginData[i].name] = LoginData[i]['value'];
		 }
		 
	$.ajax(
		{
			url:"/CheckLogin",
			type :"post",
			datatype :"json",
			contentType:"application/json;charsetset=UTF-8",
			data : JSON.stringify(LoginPram),
			success:function(data)
			{
				if(data.result=="false")
					{
						alert("用户名或密码错误,请重新输入")
					}
				else
					{
						window.location.href=data.view;
						
					}
			}
		})
}
</script>

</head>
<body background="image/back1.PNG">
<div align = "center">
<br/><br/><br/><br/><br/><br/> /*前端不太会,<br>用来调整位置*/
<br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/>
  <form  id = "loginform">
  	用户名:<input type="text" name="cardid" id="name" ><br/>
  	密码:<input type = "password" name = cardpassword id = "password">
  	
  </form>
  
  <button id = "bt1"  class="button">登录</button>
  </div>
</body>
           

我们一条一条看:

1.我们jsp页面上有两个东西,一个是表单另外一个是一个按钮。

2.表单是用来获取用户信息的,按钮是用来发送ajax请求的。

3.表单转化为json数组:

var LoginData = $("#loginform").serializeArray();
	var LoginPram = {};		

	for(var i =0;i<LoginData.length;i++)
		 {
		 	LoginPram[LoginData[i].name] = LoginData[i]['value'];
		 }
           

具体原理就不赘述了,感兴趣的看这里

只要把表单的id改成你自己的表单id就能用。

然后我们看ajax部分:

$.ajax(
		{
			url:"/CheckLogin",
			type :"post",
			datatype :"json",
			contentType:"application/json;charsetset=UTF-8",
			data : JSON.stringify(LoginPram),
			success:function(data)
			{
				if(data.result=="false")
					{
						alert("用户名或密码错误,请重新输入")
					}
				else
					{
						window.location.href=data.view;
						
					}
			}
		})
           

ajax是一个比较结构化的东西,所以这里也比较简单:

url:你想要请求的后端RequestMapping

type:请求方式,我们由于要发送信息到后台,所以就用post

datatype:期望接收的数据格式,这里我们用了json

contentType:发送消息主体格式,由于Spring对json有很好的支持,所以很多都是application/json

data:你的消息或者数据主体

success:回调方法

3. 后端接受请求返回数据

代码如下:

@RequestMapping("CheckLogin") 
	@ResponseBody
	public Map checkLogin(@RequestBody CardInfo card ,HttpSession session)
	{
		Map<String, String> map = new HashMap<>(16);
		Long cardId = card.getCardid();
		CardInfo cardCheck = cardService.quaryCardInfo(cardId);
		if(cardCheck!=null)
		{
			if(card.getCardpassword().equals(cardCheck.getCardpassword()))
			{
				map.put("result", "true");
				map.put("view","main");				
				session.setAttribute("loginCard", cardId);
			}
			else
			{
				map.put("result", "false");
			}
		}
		else
		{
			map.put("result", "false");
		}
		
		
		return map;
	}
           

由于我们前端发送的账号和密码是实体类CardInfo的数据,由于Spring的映射机制,会把传来的数据通过@RequestBody注解注入到对象中。然后后台就拿到了前端传来的数据。然后我们用Map来返回数据。在Map对象里写入你想要返回的数据。然后将Map对象返回。

在前端的Succcess里,我们直接用参数点name就可以取出想要的value了。

个人实验成功,有出错的地方或者大佬有更好的方法欢迎指正,感谢。