这是我的ajax电话: <body onload = "${remoteFunction(controller:'accountManagement', action:'createAccount', params:[facebookUID: params.facebookUID, gender: params.gender, firstName: params.firstName, lastName: params.lastName])}">
<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'); } `
它不会重定向。取而代之的是,它停留在与开始时相同的加载页面上。
如果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属性进行更新。
remoteFunction
update