Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
Javascript 在grails中的视图和控制器查询之间传递值_Javascript_Grails_Parameter Passing - Fatal编程技术网

Javascript 在grails中的视图和控制器查询之间传递值

Javascript 在grails中的视图和控制器查询之间传递值,javascript,grails,parameter-passing,Javascript,Grails,Parameter Passing,我有一个grails控制器(Tablev1classController.groovy),其中包含一个sql查询,如下所示: class Tablev1classController { def dataSource def listjson = { def sql = new Sql(dataSource) def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing,

我有一个grails控制器(Tablev1classController.groovy),其中包含一个sql查询,如下所示:

class Tablev1classController {

def dataSource

def listjson = {
def sql = new Sql(dataSource)
def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing,
                     organic, single_page_visits , total_units from tablev1 
                     where si_flag ='Serialized' ")
sql.close()
render rows as JSON
 }
 }
在视图中,我有如下下拉列表:

<select id="si_flag" class="wrapper-dropdown">
<option value ="serialized">serialized</option>
<option value ="non-serialized">non-serialized</option>
</select>
var si_flag = document.getElementById('si_flag');

连载
非序列化
var si_flag=document.getElementById('si_flag');
如何将存储在变量'si_flag'中的该值作为参数传递给控制器中定义的查询(在where条件下)。

Nisha

首先,您必须确保变量
si_标志
已发布到控制器,因为我在代码中看不到post或ajax调用

然后,按如下方式重新编写查询:

def rows = sql.rows("""select date_hour, total_revenue as sales, visits, 
                       marketing,organic, single_page_visits , total_units 
                       from tablev1 
                       where"""+params?.si_flag""+""" ='Serialized' """)
然后一切都会好起来!! 确保您的si_标志在发布到控制器时具有某些值。 你可以用

log.info(““发布的si_标志内容”+parmas.si_标志)或
pritnln“发布的si_标志内容:$params.si_标志”


您可以使用如下参数直接在控制器中获取表单值

class Tablev1classController {

def dataSource
def selected=params.si_flag

def listjson = {
def sql = new Sql(dataSource)
def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing,                   organic, single_page_visits , total_units from tablev1 where si_flag = '${selected}' ")
sql.close()
render rows as JSON
}
}

使用jqueryajax。您一定被折磨过,最终得到了控制器的名称(这意味着您的模型被称为Tablev1class)。没有选择。在我之前从事该项目的人员无缘无故地给出了该名称,而且除了控制器的名称之外,还有很多事情需要关注,因此,我没有费心去更改它。不过,我现在肯定会考虑。请随意回答我的问题。名称无关紧要。