【问题标题】:how to call js function from my controller grails如何从我的控制器 grails 调用 js 函数
【发布时间】:2015-07-29 09:45:14
【问题描述】:

我是 grails 新手,如果有人可以帮助我,那就太好了。

我有一个 js 函数,我会在控制器中调用它以在控制器中执行一些操作后打开一个弹出窗口。

我有这个 gsp 文件:

<g:form controller="admin" method="post">
<table summary="generer PDF">
..
..
<td>
<g:actionSubmit value="generate" action="genererAction"/>
</td>
</tr>
</table>
</g:form>

当用户点击“生成”(按钮)时,它必须调用这个函数:

def generateAction = {
def result
...
if (result){ 
//here, if result=true a popup will be displayed
}
else  {
redirect(action: 'index')
}}

我希望你能帮助我。谢谢。

【问题讨论】:

    标签: javascript jquery ajax grails


    【解决方案1】:

    你可以用 ajax 来做,这里是一个例子:

    查看:

    <g:form controller="admin" method="post">
    <table id="tableID" summary="generer PDF">
    ..
    ..
    <td>
    <!--<g:actionSubmit value="generate" action="genererAction"/>-->
    <button onclick="preformAction(); return false;">generate</button>
    </td>
    </tr>
    </table>
    </g:form>
    

    控制器:

    def generateAction = {
    def result
    ...
    if (result){ 
    //here, if result=true a popup will be displayed
    render "success"
    }
    else  {
    //redirect(action: 'index')
    render "index"
    }}
    

    Script : // 将此脚本复制到您的视图中

    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script type="text/javascript">
    function preformAction(){
        $.ajax({
            url:'${createLink(controller:"admin",action:"generateAction")}', // here you can pass the controller url
            data: {
                // data to be passed to controller
            },
            success : function(response){
                // this block is called after successful processing of controller
                // here you can call your js function after controller has finished its processing
                // consider response has 'success'
                if(response == 'success'){
                     OpenSAGPopup();
                } else if(response == 'index'){
                     window.location = '${createLink(controller:"admin",action:"index")}';
                }
    
            },
            error : function(response){
                // this block executes if any error occurs with the processing of controller
                alert("Error while generating pdf");
            },
        });
    }
    </script>
    

    试试这个,如果有效,请告诉我......

    快乐编码。

    【讨论】:

    • 在我的函数中,如果返回特定值,我将调用 js 函数;在这种情况下我该如何使用这个 ajax 代码?
    • 对不起,但我不知道该代码的确切位置。我不熟悉 ajax。
    • 你能提供你想要实现这个的实际代码吗??
    • 我已经更新了这个问题,我希望现在更清楚!
    • 不行,我用的是没有js或ajax的简单窗口,非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2011-09-09
    • 2014-10-23
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多