如何将多个对象呈现为JSON以及如何从Grails中的<g:javascript>中检索该对象?</g:javascript>

时间:2012-09-20 11:25:46

标签: javascript ajax json grails

实际上我想使用Ajax在结果 div中添加两个选择框。我有一个名为 ajaxFun 的函数,用于检索该两个选择框的值。我试图将多个对象渲染为JSON。但我不知道如何渲染以及如何从我的javascript函数中检索渲染对象。

我的GSP页面。

<table>
<tr>
<td><div id="test" onclick="${remoteFunction(controller:'ProjectOperations', action:'ajaxFun', update:'results',onComplete:'getFields(e)',params:'\'filter=\' + escape(this.id)' )}">click me!</div></td>
</tr>
</table>
<div id="results"></div>

控制器类

import grails.converters.JSON

class ProjectOperationsController {

    def ajaxFun(){
                def project="Hill"
                def company="VK"
        def operation=Operation.findAllByProject_name(project)
        def staff=StaffDetails.findAllByCompany_name(company)

        render operation,staff as JSON//am not sure 
    }
}

这里我想呈现两个列表[操作和工作人员相信..]。 然后我也想知道如何从javascript函数中检索渲染的对象。

Javascript功能

<g:javascript>
  function getFields(e){ 
// here I want to retrieve that two objects.
 } 
 </g:javascript>

1 个答案:

答案 0 :(得分:0)

在控制器更改

    render operation,staff as JSON//am not sure 

    render [operation:operation,staff:staff] as JSON

然后在javascript中

 function getFields(e){
    var data = eval("("+e.responseText+")");
    console.log(data.staff);
    console.log(data.operation);
 }

在您的控制台中,您应该看到工作人员的内容,然后来自findAll的操作内容可能是您可以在JavaScript中使用的数组。