Javascript 在grails中的视图和控制器查询之间传递值
我有一个grails控制器(Tablev1classController.groovy),其中包含一个sql查询,如下所示: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,
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)。没有选择。在我之前从事该项目的人员无缘无故地给出了该名称,而且除了控制器的名称之外,还有很多事情需要关注,因此,我没有费心去更改它。不过,我现在肯定会考虑。请随意回答我的问题。名称无关紧要。