前后端ajax和json數(shù)據(jù)交換方式
前后端ajax和json數(shù)據(jù)交換
控制層返回json字符串?dāng)?shù)據(jù)給前端,前端通過ajax處理將數(shù)據(jù)展示給用戶。
下面通過一個(gè)小案例來講解
首先需要搭建springMVC框架環(huán)境,可以參考為之前的文章

編寫一個(gè)實(shí)體類User
package com.pojo;
public class User {
private String username;
private String password;
private String sex;
@Override
public String toString() {
return "User{" +
"username='" + username + ''' +
", password='" + password + ''' +
", sex='" + sex + ''' +
'}';
}
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(String username, String password, String sex) {
this.username = username;
this.password = password;
this.sex = sex;
}
}第一個(gè)案例
controller返回一個(gè)學(xué)生信息數(shù)組,前端獲取并打印到界面
寫一個(gè)UserController控制器
package com.controller;
import com.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
//該注解相當(dāng)于@responseBody+@Controller
@RestController
public class UserController {
//返回學(xué)生信息的集合
@RequestMapping("/user")
public List<User> getUser(){
List<User> users = new ArrayList<>();
User user = new User("小明","123456","男");
User user1 = new User("小紅","123456","女");
User user2 = new User("小白","123456","男");
User user3 = new User("小李","123456","女");
users.add(user);
users.add(user1);
users.add(user2);
users.add(user3);
return users;
}
}index.jsp頁面,注意jquery的版本不能太低,版本低的用不了$.post方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Ajax</title>
<%-- 注意路徑問題,導(dǎo)入jquery--%>
<script src="${pageContext.request.contextPath}/static/js/jquery-3.6.0.js"></script>
</head>
<body>
<script type="text/javascript">
$(function () {
//獲取學(xué)生數(shù)據(jù)
$("#btn").click(function () {
//post請(qǐng)求處理后端傳來的數(shù)據(jù)
//data封裝了服務(wù)器返回的數(shù)據(jù)
$.post("${pageContext.request.contextPath}/user",function (data) {
console.log(data)
var html=""
for (var i=0;i<data.length;i++){
html+="<tr>"+"<td>"+data[i].username+"</td>"+
"<td>"+data[i].password+"</td>"+
"<td>"+data[i].sex+"</td>"+"</tr>"
}
//數(shù)據(jù)顯示在頁面上
$("#context").html(html)
})
})
})
</script>
<input type="button" id="btn" value="獲取學(xué)生數(shù)據(jù)" >
<table border="1" cellspacing="0" style="width: 50%" align="center">
<tr>
<td>姓名</td>
<td>密碼</td>
<td>性別</td>
</tr>
<!--后端傳來的數(shù)據(jù)打印于此-->
<tbody id="context">
</tbody>
</table>
</body>
</html>
點(diǎn)擊獲取數(shù)據(jù),則會(huì)打印后臺(tái)傳來的數(shù)據(jù)

第二個(gè)案例
模擬登錄,運(yùn)用onblur焦點(diǎn)失去事件,當(dāng)我們輸入完一個(gè)值,ajax會(huì)幫我們驗(yàn)證用戶名,密碼是否正確
寫loginController控制器
package com.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class loginController {
@RequestMapping("/login")
public String login(String username,String password){
String message="";
//要先判斷用戶名是否為空
if(username!=null)
{
//這里用戶名寫死為admin
if ("admin".equals(username)) {
message="成功";
}else {
message="用戶名錯(cuò)誤";
}
}
//先判斷密碼是否為空
if(password!=null)
{
//這里密碼寫死為123456
if(password.equals("123456")){
message="成功";
}else {
message="密碼錯(cuò)誤";
}
}
//返回message到前端
return message;
}
}前端頁面login.jsp
<%--
Created by IntelliJ IDEA.
User: 21781
Date: 2021/12/31
Time: 19:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script src="${pageContext.request.contextPath}/static/js/jquery-3.6.0.js"></script>
<script>
//驗(yàn)證用戶名是否正確
function a1() {
//{"username":$("#username").val()}為傳入后端的參數(shù)值
$.post("${pageContext.request.contextPath}/login",{"username":$("#username").val()},function (data) {
if (data.toString()=="成功"){//表示用戶名正確
$("#name").css("color","green")
}else {
$("#name").css("color","red")
}
$("#name").html(data)
})
}
//驗(yàn)證密碼是否正確
function a2() {
$.post("${pageContext.request.contextPath}/login",{"password":$("#password").val()},function (data) {
if (data.toString()=="成功"){//表示用戶名正確
$("#ped").css("color","green")
}else {
$("#ped").css("color","red")
}
$("#ped").html(data)
})
}
</script>
</head>
<body>
<p align="center">
<!--onblur焦點(diǎn)失去事件,鼠標(biāo)一離開即觸發(fā)事件-->
用戶名:<input type="text" id="username" onblur="a1()">
<!--用于寫提示信息-->
<span id="name"></span>
</p>
<p align="center">
密碼:<input type="text" id="password" onblur="a2()">
<!--用于寫提示信息-->
<span id="ped"></span>
</p>
</body>
</html>測試如下

當(dāng)我們輸入用戶名和密碼后,會(huì)進(jìn)行相應(yīng)判斷

這樣就模擬完成json和ajax數(shù)據(jù)交互。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
AJAX 用戶唯一性驗(yàn)證實(shí)現(xiàn)代碼
用ajax實(shí)現(xiàn)用戶名的檢測,提示是否重復(fù)的實(shí)現(xiàn)代碼。2009-11-11
利用Ajax實(shí)現(xiàn)智能回答的機(jī)器人示例代碼
這篇文章主要介紹了利用Ajax實(shí)現(xiàn)智能回答的機(jī)器人,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
ECSHOP中實(shí)現(xiàn)ajax彈窗登錄功能
本文主要給大家介紹在ecshop中實(shí)現(xiàn)ajax彈窗登錄功能,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-03-03
使用ajax技術(shù)無刷新動(dòng)態(tài)調(diào)用新浪股票實(shí)時(shí)數(shù)據(jù)
由于最近網(wǎng)速慢的緣故,查看股票信息時(shí)網(wǎng)頁老是打不開。這幾天一直在研究ajax,于是用jquery自己做了一個(gè)自動(dòng)讀取新浪股票實(shí)時(shí)數(shù)據(jù)的頁面2014-08-08
詳解ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁
jtemplate是一個(gè)基于JQuery的模板引擎插件,功能非常強(qiáng)大,有了她你就再不用為使用JS綁定數(shù)據(jù)集而發(fā)愁了。本文給大家分享ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁,需要的朋友可以參考下本文2015-09-09
js跨域調(diào)用WebService的簡單實(shí)例
下面小編就為大家?guī)硪黄猨s跨域調(diào)用WebService的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
asp.net 全部選中與取消操作,選中后的刪除(ajax)實(shí)現(xiàn)無刷新效果
現(xiàn)在我們?cè)诰幊痰臅r(shí)刻總是要利用一些最新的技術(shù)去解決問題。。。。下面是我用ajax與jequery結(jié)合在一起使用的一個(gè)實(shí)例。希能給一起學(xué)習(xí)的朋友們帶來幫助。2009-06-06
AJAX應(yīng)用實(shí)例之檢測用戶名是否唯一(實(shí)例代碼)
本文通過實(shí)例代碼給大家介紹了AJAX應(yīng)用實(shí)例之檢測用戶名是否唯一,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09
js對(duì)ajax返回?cái)?shù)組的處理介紹
本篇文章主要是對(duì)js對(duì)ajax返回?cái)?shù)組的處理進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02

