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" />

它的作用是执行数据库查询,然后使用成功消息重定向到主页。

所以我需要 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 调用它有什么区别?

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

我在我的一个插件中使用了 java 脚本。看看这个例子:

https://github.com/vahidhedayati/ajaxdependancyselection/blob/master/grails-app/views/autoComplete/_filterField.gsp

此文件夹中有更多示例,您可以根据自己的情况进行调整。其中大多数执行并返回远程结果-然后您可以根据输出进行更改...

于 2014-05-30T11:39:46.220 回答
0

在 Grails 中,您可以从JavaScript调用action ,如下所示: userIdviewId是 action 的参数。

函数closeAgentPopup (userId){

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

}

于 2014-05-30T09:57:16.913 回答