關(guān)于SpringBoot在有Ajax時候不跳轉(zhuǎn)的問題解決
問題描述
最近在嘗試使用SpringBoot做一個后臺管理系統(tǒng),由于目前還沒有學(xué)會VUE,所以前端頁面采用的 thymeleaf+ajax的模式。前兩天在開發(fā)登錄頁的時候遇到了一個問題,登錄之后按照正常流程應(yīng)該是要在控制器里跳轉(zhuǎn)到首頁的,但是我的登錄頁死活不跳轉(zhuǎn)。 控制器的邏輯也是沒有問題的
@Controller class LoginController { @Resource lateinit var adminService: AdminService @RequestMapping("/login",method = [RequestMethod.POST]) fun login(@RequestParam name:String,@RequestParam password:String):String?{ val admin=adminService.login(name,password) return if (admin==null){ "" }else{ //一般情況下是可以直接渲染到main.html的,但是添加了Ajax之后跳轉(zhuǎn)就會失效 "main" } } }
Ajax里邊的邏輯
$.ajax({ method: 'POST', url: 'http://localhost:8080/login', data: { name: $('[name="username"]').val(), password: $('[name="password"]').val() }, success:function (r) { console.log(r) }, error:function (result) { alert(result) } })
控制臺返回的信息
解決方法
這里先給出解決方法,至于原因會在最后說明。解決方法就是在控制器中新增一個mainPage方法,對應(yīng)到main.html。
@RequestMapping("/main") fun mainPage():String{ return "main" }
然后再在Ajax的success回調(diào)中調(diào)用這個控制器,完成跳轉(zhuǎn)。
success:function (r) { window.location.href="http://localhost:8080/main" rel="external nofollow" },
原因梳理
一開始以為是控制器寫的有問題,然后就各種修改控制器的配置,最后發(fā)現(xiàn)無論怎么修改都沒有效果,并且發(fā)現(xiàn)如果在瀏覽器中直接調(diào)用main.html的控制器路徑也是沒有問題的,這種情況就想到了會不會是Ajax那的問題。為了驗證是不是Ajax的問題,在Ajax回調(diào)成功的代碼那里打了個斷點,想看一下后臺返回來的數(shù)據(jù)到底是個啥
看到?jīng)],控制器把整個main.html的頁面都返回到Ajax里了,也就是說,在使用Ajax的時候,SpringBoot的控制器并沒有進行頁面渲染,而是把目標(biāo)頁面結(jié)構(gòu)返回了,能跳轉(zhuǎn)才怪了。
總結(jié)
到此這篇關(guān)于SpringBoot在有Ajax時候不跳轉(zhuǎn)問題解決的文章就介紹到這了,更多相關(guān)SpringBoot有Ajax不跳轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud中的Feign服務(wù)間的調(diào)用詳解
這篇文章主要介紹了SpringCloud中的Feign服務(wù)間的調(diào)用詳解,Feign 是一個聲明式的 REST 客戶端,它能讓 REST 調(diào)用更加簡單,Feign 供了 HTTP 請求的模板,通過編寫簡單的接口和插入注解,就可以定義好 HTTP 請求的參數(shù)、格式、地址等信息,需要的朋友可以參考下2024-01-01bool當(dāng)成函數(shù)參數(shù)錯誤理解
經(jīng)常會在函數(shù)的參數(shù)里使用bool參數(shù),這會大大地降低代碼的可讀性2012-11-11SpringBoot JPA 表關(guān)聯(lián)查詢實例
本篇文章主要介紹了SpringBoot JPA 表關(guān)聯(lián)查詢實例,使用JPA原生的findBy語句實現(xiàn),具有一定的參考價值,有興趣的可以了解一下。2017-04-04在SpringBoot中使用MongoDB完成數(shù)據(jù)存儲
本文主要介紹了在SpringBoot中如惡化使用MongoDB完成數(shù)據(jù)存儲,接下來這篇我們將圍繞MongoDB進行,MongoDB是一個開源的,面向文檔的NoSQL數(shù)據(jù)庫管理系統(tǒng),使用類似JSON的BSON(二進制JSON)格式來存儲數(shù)據(jù),具有靈活的數(shù)據(jù)模型和強大的查詢功能,需要的朋友可以參考下2023-11-11idea手動執(zhí)行maven命令的三種實現(xiàn)方式
這篇文章主要介紹了idea手動執(zhí)行maven命令的三種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08