0

因此,我通过 SQL 在我的控制器中获得了一组结果并将其传递给 GSP,然后我将这些数据粘贴到一个隐藏字段中,如下所示:-

[
{forms_idx=0, form_id=21, events_idx=0, event_id=110, object_id=2, value=null},
{forms_idx=0, form_id=21, events_idx=1, event_id=109, object_id=3, value=null}, 
{forms_idx=1, form_id=22, events_idx=0, event_id=112, object_id=2, value=null}, 
{forms_idx=1, form_id=22, events_idx=1, event_id=111, object_id=1, value=null}, 
{forms_idx=2, form_id=23, events_idx=0, event_id=114, object_id=2, value=null}, 
{forms_idx=2, form_id=23, events_idx=1, event_id=113, object_id=3, value=null}
]

然后我通过这个传递给一个jQuery函数: -

$(document).ready(function () {
testing($("#myresults").val());
});

我知道这是可行的,因为我已经用一个简单的静态值进行了尝试,然后在测试函数中发出了警报。

我的问题是,我现在如何将某种简单的循环放入我的函数中,以解决我传递的数据中的结果?!我已经尝试过每个等,但它不起作用,我可能错过了一些非常基本的东西,有什么建议吗?这是我目前正在尝试的......

function testing(results){
    $.each(results, function(index, value){
        alert(index + " " + value)
    })
}

我也试过这个,但只是undefined恢复了价值......

function testing(results){
alert(results);
}
4

2 回答 2

1

所以这里的问题是隐藏字段包含数据字符串,而您想使用它,因为它是 JSON。您的选择:

  • 在控制器中有单独的方法返回 JSON 数据:

    import grails.converters.JSON;
    
    class MyController {
        def showData() {
            def myData = [some:'map']
            render myData as JSON
        }
    }
    

    然后在你的javascript中:

    $.getJSON('my/showData',function(jsonData){
        console.log( "Data ready to be used: " + JSON.stringify(jsonData) );
    });
    
  • 或者在 javascript 变量中打印 JSON 而不是隐藏字段:

    <%@ page import="grails.converters.JSON" %>
    <r:script disposition="head">
        var myData = ${dataFromModel as JSON};
        console.log( "Data ready to be used: " + JSON.stringify(myData) );
    </r:script>
    
  • 或者使用自定义 javascript 解析器将您的字符串转换为 JSON 对象

    // TODO create parser :)
    
于 2013-07-16T12:34:14.357 回答
0

尝试 :

<%@ page import="import grails.converters.JSON" %>
$(document).ready(function () {
    testing($("#myresults").val().encodeAsJSON());
});

尽管将数据放入模型而不是隐藏字段会更有意义...

于 2013-07-15T16:59:13.373 回答