2

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


}
`

它不重定向。相反,它停留在它开始时的同一个加载页面上。

4

2 回答 2

3

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

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

确保浏览器呈现 AJAX 响应。使用 grailsremoteFunction标记,您应该指定要使用update属性更新的元素。

于 2012-09-11T20:31:29.027 回答
1

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

于 2012-09-11T20:27:30.113 回答