Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails-在remoteSubmit中使用javascript调用呈现div_Javascript_Grails - Fatal编程技术网

Grails-在remoteSubmit中使用javascript调用呈现div

Grails-在remoteSubmit中使用javascript调用呈现div,javascript,grails,Javascript,Grails,我有一种情况,我想在GSP(actionSubmit)中点击一个按钮,并在完成调用(包括对javascript函数的调用)时更新一个div。我希望最终在控制器中呈现searchResults参数和带有结果的div(目前正在工作) 问题是,我需要(大概)将actionSubmit包装成一个remoteForm。但我如何: 1) 运行onClick中已经存在的javascript方法 2) 在控制器中呈现页面 如果我尝试在控制器中包装这两个动作,我会完成remoteForm动作和javascript

我有一种情况,我想在GSP(actionSubmit)中点击一个按钮,并在完成调用(包括对javascript函数的调用)时更新一个div。我希望最终在控制器中呈现searchResults参数和带有结果的div(目前正在工作)

问题是,我需要(大概)将actionSubmit包装成一个remoteForm。但我如何: 1) 运行onClick中已经存在的javascript方法 2) 在控制器中呈现页面

如果我尝试在控制器中包装这两个动作,我会完成remoteForm动作和javascript动作“挂起”,并且永远不会完成

有什么想法吗

普惠制

   <g:actionSubmit type="button" value="Ping All" onclick="getIds('contactList');"/>

    function getIds(checkList)
        {
            var idList = new Array(); 
            jQuery("input[name=" + checkList + "]:checked").each 
            ( 
                function() { 
                    idList.push(jQuery(this).val()); 
                } 
            );

            $.ajax({ 
                url: "pingAll", 
                type:"GET", 
                data:{ids:JSON.stringify(idList)}
            });
        }

您有两个选择:

1) 您可以避免使用Grails远程标记(formRemote、remoteField等),我真的鼓励您探索和理解它们是如何工作的。Grails远程标记通常不是很灵活。了解它们如何工作的最好方法是使用Grails online文档中的示例编写一些示例标记,然后在web浏览器中查看呈现的页面。一般来说,所有标记都是输出基本html,带有Grails标记中定义的属性。打开您最喜欢的HTML源代码视图(即Firebug),查看Grails为呈现的HTML输出了什么

我之所以这样说是因为,到目前为止,您编写的代码在某种程度上实现了我上面所说的,而没有使用任何GSP标记

g:actionSubmit使用您定义的控制器操作提交您正在使用的表单(您在这里没有定义控制器操作,因此它运行在您的值属性中命名的操作)。但是,在actionSubmit上还有一个onClick,它运行一个AJAX调用,该调用还将数据提交给pingAll操作。在没有看到表单中的其他代码和其他内容的情况下,您将提交两次表单

您可以简单地不编写actionSubmit,只需通过onClick执行button(NotSubmit)类型的输入。然后在运行的javascript函数中,为AJAX调用定义一个jQuery成功选项

$.ajax({ 
    url: "pingAll", 
    type:"GET", 
    data:{ids:JSON.stringify(idList)},
    success:function(data) {
        $('#your-updatedDiv-id-here').html(data);
    }
});

2) 如果你想使用普惠制标签,我认为你用错了。在不知道您的使用范围和涉及的表单数据的情况下,g:formRemote、g:submittomote和g:remoteFunction似乎可以满足您的需要。所有这些属性都可以定义,以便在远程调用之前调用javascript,还可以定义要更新的div和各种事件处理程序。

javascript条目的宾果。我能够在pingAll调用期间更新我的services变量,并用Javascript处理html刷新。非常感谢。
$.ajax({ 
    url: "pingAll", 
    type:"GET", 
    data:{ids:JSON.stringify(idList)},
    success:function(data) {
        $('#your-updatedDiv-id-here').html(data);
    }
});