2013-03-02 67 views
0

行動我有一個控制器調用的Grails從JavaScript VS GSP

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查詢,然後用成功消息重定向到主頁面。

所以我需要gsp來調用一個不同的動作,它執行一些JavaScript工作,如彈出式確認消息,一旦它完成,它會調用該動作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調用它的動作之間的區別是什麼?

回答

1

在您的GSP標籤中,您不要使用ajax來調用它。這是對您的操作的直接GET請求。這意味着整個頁面都會刷新。 當你用ajax調用你的動作時,動作的響應被渲染成一個對象。 然後,您可以通過使用Javascript來操作DOM來顯示操作的結果(在您的案例中是不同的操作 - 列表操作)。

可以着,當然,調用與JavaScript的動作沒有Ajax:

function processDelete(btn, text){ 
    loacation.href="${createLink(action: 'deleteFiling')}"; 
} 
0

Grails中,你可以調用行動的JavaScript如下: 用戶idviewId是參數的行動。

功能closeAgentPopup(用戶id){

window.location.href = 「$ {建立連結(動作: '輪廓',控制器: '代理')}」 + '/' +用戶id +'? viewId = 0' ;

}