0

コントローラーにアクションがあります

def deleteFiling={
  obj.removeFiling()
  redirect(action:"list")

}

これは gsp から呼び出されます:

<g:link action="deleteFiling" id="${filingInstance.id}"> <img src="${resource(dir:'images',file:'trash.gif')}" title="Delete" />

DBクエリを実行し、成功メッセージとともにメインページにリダイレクトします。

したがって、ポップアップ確認メッセージのようなJavaScriptの機能を実行する別のアクションを呼び出すためにgspが必要であり、それが完了すると、そのアクションdeleteFilingを呼び出して実行します。

だから私はextjsでこのようなことをしています:

Ext.MessageBox.show({
    title:'Commit Confirmation',
    msg: 'You are about to <strong>Delete</strong> the entire <strong>Filing</strong>. This \n action cannot be reversed within the form PF application. \n\nAre you sure you want to Proceed',
    buttons: Ext.MessageBox.YESNO,
    fn: processDelete,
    icon: Ext.MessageBox.QUESTION
});
function processDelete(btn, text){
    $.ajax({
           url : appContextRoot + '/filing/deleteFiling'
           //success:mySuccessFunction 
    });
}

私が抱えている問題は、ajax 呼び出しを介してアクションを呼び出すと、クエリは実行されますが、リダイレクトは行われないことです。

しかし、アクションを gsp から直接呼び出すと、リダイレクトが機能します。私の質問は、Java スクリプトから ajax 呼び出しを使用してアクションを呼び出すことと、gsp から直接呼び出すことの違いは何ですか?

4

3 に答える 3

1

GSPタグでは、ajaxで呼び出しません。これは、アクションへの直接の GET リクエストです。これは、ページ全体が更新されることを意味します。アクションを ajax で呼び出すと、アクションの応答がオブジェクトにレンダリングされます。その後、Javascript で DOM を操作することにより、アクションの結果 (この場合は別のアクション - リスト アクション) を表示できます。

もちろん、ajax なしで JavaScript を使用してアクションを呼び出すこともできます。

function processDelete(btn, text){
    loacation.href="${createLink(action: 'deleteFiling')}";
}
于 2013-03-02T18:44:40.873 に答える
0

Grails では、次のようにJavaScriptからアクションを呼び出すことができます: userIdviewIdはアクションのパラメーターです。

関数closeAgentPopup(ユーザーID){

window.location.href= "${createLink(action:'profile', controller:'agent')}"+'/'+userId+'?viewId=0';

}

于 2014-05-30T09:57:16.913 に答える