如何将JSON对象从JSP传递到Javascript?

时间:2018-09-21 00:43:21

标签: javascript jsp

我有一个myInitState变量,该变量在控制器中初始化,然后传递给jsp视图。

<script>
    myInitFunction({ 
        myInitState: '${myInitState}',
        componentName: 'myCompName',
        divId: 'divId'        
    });
</script>

但是,通过使用'${myInitState}',在我的Javascript中,我注意到在浏览器中进行调试时会得到一个字符串“ {...}”。

可以将对象作为json传递并被这样识别吗?还是可以在myInitFunction中重新解析对象?

2 个答案:

答案 0 :(得分:0)

为了利用字符串插值,您需要使用反引号

  

`$ {myInitState}`

然后您将要使用JSON.parse(someString)

来解析函数内部的字符串

答案 1 :(得分:0)

在此处更新答案: 由于误解,我没有考虑以下几点:  -myInitState是<String,Object>的映射  -地图的值可能已经转义为JSON Blob。

在这种情况下,流程是从服务器到客户端的,因此为了正确地将地图转换为JSON blob,我需要在JSP中执行以下操作:

<script>
    var jsonBlob = {
        <c:forEach items="${myInitState}" var="state" varStatus="loop">
            "${state.key}": ${state.value} ${not loop.last ? ',' : ''}
        </c:forEach>
    };
</script>

但是,一种更好的方法以及我所采用的方法是只在构造myInitState的控制器本身中进行转换。