Servlet设置为request.setAttribute("json", jsonObject);
在jsp页面中可以通过(Jsonobject )request.getAttribute("json")获得
JavaScript中用var arr = "${json}";
此时获得的arr是json数据格式吗?为什么我这边会显示出错呢?
调试时已经显示了json数据,但是就是无法提取
alert(arr.name);
alert(JSON.stringify(arr));
均不可以取得。
Servlet传过来的对象只能到html中或者jsp中,如果此时js代码也在页面中,那么js可以获得对象。
但是单独的js文件,因为不在页面中,是得不到Servlet传过来的对象。
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),就不会有问题了;
十分感谢,发现问题了,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>引用是有的
@别闹了费曼sir: <script></script>这种表达方式是在页面上才用的,如果在js文件里的话没有这种用法吧。除非你写的字符串。
关键是要看你获取的arr是否正确。
@程序人生,永无止境: 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);
}