前后端ajax和json數(shù)據(jù)交換方式
前后端ajax和json數(shù)據(jù)交換
控制層返回json字符串?dāng)?shù)據(jù)給前端,前端通過(guò)ajax處理將數(shù)據(jù)展示給用戶(hù)。
下面通過(guò)一個(gè)小案例來(lái)講解
首先需要搭建springMVC框架環(huán)境,可以參考為之前的文章
編寫(xiě)一個(gè)實(shí)體類(lèi)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ù)組,前端獲取并打印到界面
寫(xiě)一個(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頁(yè)面,注意jquery的版本不能太低,版本低的用不了$.post方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Ajax</title> <%-- 注意路徑問(wèn)題,導(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)求處理后端傳來(lái)的數(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ù)顯示在頁(yè)面上 $("#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> <!--后端傳來(lái)的數(shù)據(jù)打印于此--> <tbody id="context"> </tbody> </table> </body> </html>
點(diǎn)擊獲取數(shù)據(jù),則會(huì)打印后臺(tái)傳來(lái)的數(shù)據(jù)
第二個(gè)案例
模擬登錄,運(yùn)用onblur焦點(diǎn)失去事件,當(dāng)我們輸入完一個(gè)值,ajax會(huì)幫我們驗(yàn)證用戶(hù)名,密碼是否正確
寫(xiě)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=""; //要先判斷用戶(hù)名是否為空 if(username!=null) { //這里用戶(hù)名寫(xiě)死為admin if ("admin".equals(username)) { message="成功"; }else { message="用戶(hù)名錯(cuò)誤"; } } //先判斷密碼是否為空 if(password!=null) { //這里密碼寫(xiě)死為123456 if(password.equals("123456")){ message="成功"; }else { message="密碼錯(cuò)誤"; } } //返回message到前端 return message; } }
前端頁(yè)面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)證用戶(hù)名是否正確 function a1() { //{"username":$("#username").val()}為傳入后端的參數(shù)值 $.post("${pageContext.request.contextPath}/login",{"username":$("#username").val()},function (data) { if (data.toString()=="成功"){//表示用戶(hù)名正確 $("#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()=="成功"){//表示用戶(hù)名正確 $("#ped").css("color","green") }else { $("#ped").css("color","red") } $("#ped").html(data) }) } </script> </head> <body> <p align="center"> <!--onblur焦點(diǎn)失去事件,鼠標(biāo)一離開(kāi)即觸發(fā)事件--> 用戶(hù)名:<input type="text" id="username" onblur="a1()"> <!--用于寫(xiě)提示信息--> <span id="name"></span> </p> <p align="center"> 密碼:<input type="text" id="password" onblur="a2()"> <!--用于寫(xiě)提示信息--> <span id="ped"></span> </p> </body> </html>
測(cè)試如下
當(dāng)我們輸入用戶(hù)名和密碼后,會(huì)進(jìn)行相應(yīng)判斷
這樣就模擬完成json和ajax數(shù)據(jù)交互。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
揭開(kāi)AJAX神秘的面紗(AJAX個(gè)人學(xué)習(xí)筆記)
寫(xiě)這個(gè)學(xué)習(xí)筆記,只是記載一下自己的學(xué)習(xí)經(jīng)過(guò)和體會(huì),把一些學(xué)習(xí)重點(diǎn)記錄下來(lái),以備今后的鞏固復(fù)習(xí)及應(yīng)用,很多知識(shí)點(diǎn)沒(méi)有詳細(xì)介紹,所以并不完全適用于初學(xué)者,如果你是初學(xué)者,最好選擇一本AJAX學(xué)習(xí)的書(shū)籍,然后與這篇學(xué)習(xí)筆記對(duì)照學(xué)習(xí),效果會(huì)更好。2009-09-09Ajax實(shí)現(xiàn)關(guān)鍵字聯(lián)想和自動(dòng)補(bǔ)全功能及遇到坑
這篇文章主要介紹了Ajax實(shí)現(xiàn)關(guān)鍵字聯(lián)想和自動(dòng)補(bǔ)全功能,實(shí)現(xiàn)代碼包括前端部分和后端部分,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08基于Ajax+div的“左邊菜單、右邊內(nèi)容”頁(yè)面效果實(shí)現(xiàn)
這篇文章主要介紹了基于Ajax+div的“左邊菜單、右邊內(nèi)容”頁(yè)面效果實(shí)現(xiàn) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07利用ajax實(shí)現(xiàn)簡(jiǎn)單的注冊(cè)驗(yàn)證局部刷新實(shí)例
ajax的工作原理想必大家都有所了解吧,不懂的可以看看本文。下面是注冊(cè)驗(yàn)證案例register。php是注冊(cè)頁(yè)面。registerProcess.php用于接收數(shù)據(jù)并返回?cái)?shù)據(jù)2013-10-10通過(guò)Ajax請(qǐng)求動(dòng)態(tài)填充頁(yè)面數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇通過(guò)Ajax請(qǐng)求動(dòng)態(tài)填充頁(yè)面數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08pushState、replaceState、onpopstate 實(shí)現(xiàn)Ajax頁(yè)面的前進(jìn)后退刷新
這篇文章主要介紹了pushState、replaceState、onpopstate 實(shí)現(xiàn)Ajax頁(yè)面的前進(jìn)后退刷新的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算
這篇文章主要為大家詳細(xì)介紹了利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03前端ajax請(qǐng)求+后端java實(shí)現(xiàn)的下載zip壓縮包功能示例
這篇文章主要介紹了前端ajax請(qǐng)求+后端java實(shí)現(xiàn)的下載zip壓縮包功能,結(jié)合實(shí)例形式分析了ajax請(qǐng)求交互與后端圖片zip格式壓縮并下載功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2023-05-05Ajax獲取響應(yīng)內(nèi)容長(zhǎng)度的方法
這篇文章主要介紹了Ajax獲取響應(yīng)內(nèi)容長(zhǎng)度的方法,涉及Ajax調(diào)用成功后返回方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07