首页 新闻 会员 周边

JavaScript中取得Servlet传过来的Json对象时出错?

0
悬赏园豆:20 [已解决问题] 解决于 2016-12-23 16:23

Servlet设置为request.setAttribute("json", jsonObject);
在jsp页面中可以通过(Jsonobject )request.getAttribute("json")获得

JavaScript中用var arr = "${json}";

此时获得的arr是json数据格式吗?为什么我这边会显示出错呢?

 

调试时已经显示了json数据,但是就是无法提取

alert(arr.name);

alert(JSON.stringify(arr));

均不可以取得。

别闹了费曼sir的主页 别闹了费曼sir | 初学一级 | 园豆:103
提问于:2016-12-23 11:07
< >
分享
最佳答案
0

 

Servlet传过来的对象只能到html中或者jsp中,如果此时js代码也在页面中,那么js可以获得对象。

但是单独的js文件,因为不在页面中,是得不到Servlet传过来的对象。

别闹了费曼sir | 初学一级 |园豆:103 | 2016-12-23 16:22
其他回答(1)
0
        var jsonObj = {
            name:"yang",pwd:"124"
        }
        var jsonStr = "{\"name\":\"yangg\"}";
     alert("jsonObj:" + jsonObj + "\r\n jsonStr:" + jsonStr);

你先看看上面两个变量,虽然他们都包含于json数据,但是他们的格式是不一样的,一个是json对象,一个是字符串。

你先alert一下你那个arr,如果弹出的是一个字符串,那么你是alert(arr.name)不了的,如果是[Object object],则证明可以alert(arr.name);

从你附加的图片上看,你那个arr是个字符串,需要先将其转成json对象。

也就是:jQuery.parseJSON(arr);定义个变量介绍,你再alert(arr.name),就不会有问题了;

收获园豆:20
龙行天涯 | 园豆:1794 (小虾三级) | 2016-12-23 12:09

十分感谢,发现问题了,JavaScript中用var arr = "${json}";获得json时应该去掉外面的引号,即var arr=${json};就表示取到了json对象。

但是还有一个问题,为什么var arr=${json};这种表达以<script></script>形式到嵌入.jsp(html)文件中是没有问题的,但是放到单独的div.js文件中时,不能调用呢?表达有错误?还是缺少其他引用?

<script type="text/javascript" src="scripts/div.js"></script>引用是有的

支持(0) 反对(0) 别闹了费曼sir | 园豆:103 (初学一级) | 2016-12-23 15:09

@别闹了费曼sir: <script></script>这种表达方式是在页面上才用的,如果在js文件里的话没有这种用法吧。除非你写的字符串。

关键是要看你获取的arr是否正确。

支持(0) 反对(0) 龙行天涯 | 园豆:1794 (小虾三级) | 2016-12-23 15:17

@程序人生,永无止境: js文件里面arr的获取方式和<script></script>获取方式一样,但是不能获取对象,js文件内容如下

function showDiv() {
var div = document.getElementById("div");
div.style.display = "block";
var arr = ${json};
var str1="FYD62";
alert(str1);
alert(arr.name);

}

支持(0) 反对(0) 别闹了费曼sir | 园豆:103 (初学一级) | 2016-12-23 15:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册