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

时间:2012-09-11 20:08:55

标签: javascript ajax grails

这是我的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');


}
`

它不会重定向。相反,它保持在它开始的相同加载页面上。

2 个答案:

答案 0 :(得分:3)

如果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属性进行更新的元素。

答案 1 :(得分:1)

重定向ajax调用仅重定向该调用,而不是整个页面。要使整个页面重定向,您需要在JavaScript中捕获重定向的ajax调用并从JavaScript执行重定向,或者您需要让页面级操作执行重定向。