我在 Controller 中有 Action
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" />
并执行数据库查询,然后使用成功消息重定向到主页。
因此,我需要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调用来调用 Action 与直接从gsp中调用它之间有什么区别?
最佳答案
在您的GSP标记中,您不会使用ajax来调用它。这是对您的操作的直接GET请求。这意味着整个页面都会刷新。
当您使用ajax调用 Action 时, Action 的响应将呈现为一个对象。
然后,您可以通过使用Javascript操作DOM来显示操作的结果(在您的情况下为其他操作-列表操作)。
当然,您可以使用不带ajax的javascript调用操作:
function processDelete(btn, text){
loacation.href="${createLink(action: 'deleteFiling')}";
}
关于javascript - 从JavaScript V.S GSP调用Grails操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15176809/