我想知道将数据从servlet传递到js代码的最佳方法是什么。 我想到的唯一解决方案是将对象序列化为json字符串,然后将其作为请求属性传递给jsp页面,然后以js代码获取并反序列化。
有没有更好的方法来做到这一点?
答案 0 :(得分:3)
您可以在JSP语法中的<script>
标记中生成JSON对象,因此您可以使用内联javascript浏览器在页面加载时反序列化,而无需获取请求属性。它将类似于JSP页面中的以下内容。
...
<script>
<%
out.println("myJSONObj = " + myJSONObject.toString())
%>
//other javascript stuff...
console.log(myJSONObj.key1);
</script>
...
所以你在浏览器上渲染输出/读取就像是(实际的JSON对象将取决于你序列化的内容 - 当然放入你的JSONObject
):
...
<script>
myJSONObj = {key1:value1,array1:[val1,val2,val3]};
//other javascript stuff...
console.log(myJSONObj.key1);
</script>
...
另一个选择是使用AJAX简单地从servlet返回JSON字符串并接收返回类型为JSON(如果使用jquery ajax,则使用xhr响应中的JSON.parse(...))。