Heim  >  Artikel  >  Java  >  So lösen Sie das Problem, dass SpringBoot nicht springt, wenn Ajax vorhanden ist

So lösen Sie das Problem, dass SpringBoot nicht springt, wenn Ajax vorhanden ist

王林
王林nach vorne
2023-05-25 20:49:111146Durchsuche

Problembeschreibung

Ich habe kürzlich versucht, SpringBoot als Backend-Verwaltungssystem zu verwenden. Da ich VUE noch nicht gelernt habe, verwendet die Frontend-Seite den Thymeleaf+Ajax-Modus. Beim Entwickeln der Anmeldeseite ist vor zwei Tagen ein Problem aufgetreten. Nach dem Anmelden sollte ich gemäß dem normalen Vorgang zur Startseite im Controller springen, aber meine Anmeldeseite springt nicht. Es gibt kein Problem mit der Logik des Controllers. Die Logik in Ajax. Die von der Konsole zurückgegebenen Informationen. Die von der Konsole zurückgegebenen Informationen . Durch Hinzufügen einer mainPage-Methode im Controller, die main.html entspricht, kann das Problem gelöst werden.

@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之后跳转就会失效
            "main"
        }
    }
}

Dann rufen Sie diesen Controller im Ajax-Erfolgsrückruf auf, um den Sprung abzuschließen.

$.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)
    }
})

Ursachenüberprüfung

Zuerst dachte ich, es gäbe ein Problem mit dem Schreiben des Controllers, und dann habe ich die Controller-Konfiguration auf verschiedene Weise geändert. Schließlich stellte ich fest, dass es keine Auswirkungen hatte, egal wie ich es änderte Ich habe festgestellt, dass es kein Problem mit dem Controller-Pfad gibt, wenn ich main.html direkt im Browser aufrufe. In diesem Fall dachte ich, es könnte ein Ajax-Problem sein. Um zu überprüfen, ob es sich um ein Ajax-Problem handelt, setze ich einen Haltepunkt im Code, an dem der Ajax-Rückruf erfolgreich ist. Alle HTML-Seiten werden an Ajax zurückgegeben. Das heißt, bei Verwendung von Ajax rendert der SpringBoot-Controller die Seite nicht, sondern gibt die Zielseitenstruktur zurück. Es ist seltsam, dass sie springen kann. So lösen Sie das Problem, dass SpringBoot nicht springt, wenn Ajax vorhanden ist

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass SpringBoot nicht springt, wenn Ajax vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen