前后端交互

一.交互过程

1.用户访问页面,页面触发事件创建XHR对象,进行ajax请求;

2.请求访问服务器端,请求被web中间件拦截并进行处理

3.由控制层框架springmvc中的controller进行接收,controller请求业务层spring框架的service服务,service请求持久层mybatis框架的mapper映射,mapper访问数据库。操作完数据库,返回结果,mybatis封装成java对象传回service,service把java对象传回controller,controller把java对象又转换为json字符串,然后传回浏览器

4.浏览器传回给调用者XHR,XHR调用回调方法callback,callback进行json字符串的解析,从中拿到要展现的数据,通过javascript处理,最终回显到页面上。

二.jQuery实现ajax:

     $().ready(function(){//
           $.ajax({
              type: "POST",
              url: "https://p.3.cn/prices/mgets",
              contentType: "application/json;charset=utf-8",
              data: {       //拼接的参数
                  "skuIds": "J_100003717483"
              },
              dataType: "jsonp",
              success: function(data) {   //返回的结果                  //[{"cbf":"0","id":"J_100003717483","m":"10000.00","op":"2499.00","p":"2099.00"}]
                  $('#rtnData').text("返回数据:" + JSON.stringify(data));
                  $('#itemId').text("商品编号:" + data[0].id);
                  $('#itemPrice').html("商品价格: " + data[0].p);
              },
              error: function(data) {
                  alert("提交失败" + JSON.stringify(data));
             }
           });

三.vue-axios实现ajax:

3.1Get/Delete方式提交

方式一:直接拼接参数


axios.get("http://localhost:8090/getUserById?id=1")
				.then(function(result){
					console.log(result.data)
    })

方式二:使用params包装多个参数

	axios.get("http://localhost:8090/getUserById",{
				params: {
					id: 1
				}
			}).then(function(result){
					console.log(result.data)
				})

方式三:使用restFul风格

	axios.get("http://localhost:8090/user/1")
				 .then( result => {
					 console.log("AAAA")
					 console.log(result.data)
			})

3.2Post/Put方式提交

方式一:以json串提交,后端需要注解@RequestBody接收参数

<body>
		<script src="js/axios.js"></script>
		<script>
			//以json串格式传给后端
			let url = "http://localhost:8090/addUser";
			axios.post(url,{
				name: '小白',
				age: 18,
				sex: '男'
			}).then((result) =>{
				console.log("插入成功")
			})
		</script>
	</body>

方式二:以key-value字符串方式提交,后端可以通过对象直接接收

<body>
		<script src="js/axios.js"></script>
		<script>
			//key-value字符串形式传给后端
			let url = "http://localhost:8090/addUser";
			let params = new URLSearchParams();
			params.append("name","小红")
			params.append("age",19)
			params.append("sex","女")
			axios.post(url,params).then((result) => {
				console.log("插入成功")
			})
		</script>
	</body>

方式三:restFul风格,后端需要拼接参数

<!--前端代码:-->
<body>
		<script src="js/axios.js"></script>
		<script>
			const url = "http://localhost:8090/addUser/小黑/18/男"
			axios.post(url).then((result)=>{
				console.log("新增成功")
			})
		</script>
	</body>
//后端代码 
@PostMapping("/addUser/{name}/{age}/{sex}")
    public String addUser( User user) {
        userService.addUser(user);
        return "添加成功";
    }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐