groovy从控制器传递到javascript的地图

时间:2015-07-01 14:20:53

标签: javascript grails

我对Grails MVC和javascript相当新。 我遇到一个问题,我想将控制器中的地图对象传递给javascript函数。 目前有两个参数传递给javascript函数,它们是逗号分隔的,这很好用

eg. someControllerFunction() {

    variableLink = "j-javaScriptFunction-${stringArgs1},${stringArgs2}" // This is a link for an ajax call 

} 

javascript函数结构如下所示

function someJavaScriptFunction (details) {

    var d = details.split(",");
    var strintArgs1 = d[0];
    var stringArgs2 = d[1];

    ajax":{
                    "url":"${request.contextPath}/controller/methodInController?strintArgs1=" + strintArgs1 + "&stringArgs2=" +stringArgs2 
                    },
}

在ajax中调用的Controller函数目前看起来像这样

methodInController (String strintArgs1,String strintArgs2){

    //some operation
} 

现在我想将一个地图对象从控制器函数传递给javascript函数,但我无法将javascript视为无效的String对象。

以下是对三个函数所做的更改,但是我在ajax调用期间收到错误“Uncaught SyntaxError:Unexpected string”

eg. someControllerFunction() {

    variableLink = "j-javaScriptFunction-${stringArgs1},${stringArgs2},${mapArg}" // This is a link for an ajax call 

} 

地图对象看起来像这样

mapArg = [a:[],b:[],c:[],d:[]] 

javascript函数结构如下所示

function someJavaScriptFunction (details) {

    var d = details.split(",");
    var strintArgs1 = d[0];
    var stringArgs2 = d[1];
    var mapArg = d[2];

    ajax":{
                    "url":"${request.contextPath}/controller/methodInController?strintArgs1=" + strintArgs1 + "&stringArgs2=" +stringArgs2 + "&mapArg=" +mapArg 
                    },
}

在ajax中调用的Controller函数目前看起来像这样

methodInController (String strintArgs1, String strintArgs2, Object mapArg){

    //some operation
} 

这可能与我将它传递给javascript函数的方式有关,但我无法弄清楚具体原因。 谁能帮助我理解我做错了什么。 提前致谢

1 个答案:

答案 0 :(得分:1)

看起来您可能必须首先将地图强制转换为JSON(这可以解释为什么它是一个字符串)。请参阅此答案:https://stackoverflow.com/a/2064341/1902587