【jQuery/Thymeleaf】在Thymeleaf頁面用jQuery的Ajax方法取得后台數據顯示在頁面上


今天翻以前的筆記發現了其中的Dojo代碼,它被后來的JQuery取代了,jQuery又被Vue/React要趕下台了,前台真是你未唱罷我登場,程序員每次不跟還不行,跟了把總是覺得新瓶裝舊酒,膩歪了。

本文例程下載:

 https://files.cnblogs.com/files/heyang78/myBank_thymeleaf_jQuery_Ajax_table210906_2051.rar

正文:

第一步:前台頁面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Show all students</title>
<script  type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
    $(function(){
    
        $("#showBtn").click(function(){
            $.ajax({
                url: "allStus",// 請求的地址
                data:{},// 請求參數--沒有
                type:"get",// 請求方式
                dataType:"json",// 服務器返回的數據類型即為json對象
                success: function(resp) {
                    var students=resp;
                    showStudents(students);
                },
                timeout: 50000,// 超時時間,超時后會調用error后的函數
                error: function(xhr, textStatus, errorThrown) {
                    
                    // 404 請求地址無效
                    if(XMLHttpRequest.status=='404'){
                        alert("404:請求地址"+url+"無效.");                
                        return;
                    }
                    
                    var msg="xhr.readyState="+xhr.readyState+"\n";
                    msg+="xhr.status="+xhr.status+"\n";
                    msg+="textStatus="+textStatus+"\n";
                    msg+="errorThrown="+errorThrown+"\n";
                    alert(msg);
                }
            
            });
        });
    });
    
    function showStudents(students){
        var table=document.getElementById("myTable");

        // remove remained rows
        var trs=table.childNodes;
        for(var i=trs.length-1;i>=0;i--){
            table.removeChild(trs[i]);
        }

        // add new rows    
        var n=students.length;
        for(var i=0;i<n;i++){
            var stu=students[i];
            
            var td1=document.createElement("td");
            td1.appendChild(document.createTextNode(stu.id));

            var td2=document.createElement("td");
            td2.appendChild(document.createTextNode(stu.name));

            var tr=document.createElement("tr");
            tr.appendChild(td1);
            tr.appendChild(td2);
            
            table.appendChild(tr);
        }
    }
</script>
</head>
<body>
    <h1>Show all students using jquery.</h1>
    <button id="showBtn">Show</button>
    
    <table border="1px" width="160px">
        <caption>five students</caption>
        <thead>
            <tr><th>id</th><th>name</th></tr>
        </thead>
        <tbody  id="myTable" >

        </tbody>
    </table>
</body>
</html>

以上代碼需要說明的就是url: "allStus"一處,它與后台的JsonAction的一個相應函數是對應上的,其它代碼無需贅述。

 

2.后台響應代碼

@RestController
public class JsonController {
    @Autowired
    private StudentMapper studentMapper;
    
    @GetMapping("/allStus")
    public List<Student> getAllStudents() {
        List<Student> students=studentMapper.findAll();
        return students;
    }
}

這個函數的注解是和頁面上url對應上的,而返回數據貌似是對象,但由於@RestController的作用,直接變成了json對象,頁面上resp對象就是它,往后直接用就可以了。

 

3.訪問數據庫的代碼

@Mapper
public interface StudentMapper {
......
    
    @Select("select * from student")
    List<Student> findAll();
......
}

這個就是簡單查詢student表。

 

有這三部分,前台頁面通過Ajax方式傳遞請求到后台Rest控制器,然后訪問數據庫返回json對象的過程就齊活了。

--END--

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM