这是我的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');
}
`
它不会重定向。相反,它保持在它开始的相同加载页面上。
答案 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执行重定向,或者您需要让页面级操作执行重定向。