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 に答える