[英]How to traverse Grails maps in jQuery
因此,我通过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);
}
因此,这里的问题是隐藏字段保存数据字符串,而您想使用它,因为它将是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 :)
尝试:
<%@ page import="import grails.converters.JSON" %>
$(document).ready(function () {
testing($("#myresults").val().encodeAsJSON());
});
尽管将数据放入模型而不是隐藏字段会更有意义...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.