一尘不染

Grails:完成Ajax调用后,页面将不会重定向

ajax

这是我的ajax电话: <body onload = "${remoteFunction(controller:'accountManagement', action:'createAccount', params:[facebookUID: params.facebookUID, gender: params.gender, firstName: params.firstName, lastName: params.lastName])}">

在我的控制器中,最后有一个重定向指令:

def createAccount = {

    if(user.save(flush:true) == null){
        ... 
    }
    else{
        ....

        for(int i = 0; i < categories.length; i++){
            ...
        }

        println "save to database: successful"

    }

    // Redirect to index action of person controller.
    redirect(controller:'user', action: 'authenticate');


}
`

它不会重定向。取而代之的是,它停留在与开始时相同的加载页面上。


阅读 214

收藏
2020-07-26

共1个答案

一尘不染

如果AJAX调用返回重定向,浏览器将不会重定向。如果您想在AJAX调用后将用户发送到新页面,则需要使用Javascript进行操作。例:

def url = createLink(controller: 'user', action: 'authenticate')
render(contentType: 'text/html', text: "<script>window.location.href='$url'</script>")

确保浏览器呈现AJAX响应。使用grails
remoteFunction标签,您应该指定一个元素以使用该update属性进行更新。

2020-07-26