?
最近在使用jQuery的ajax方法来获取数据,但是测试过程中发现一个问题,找了很长时间才确定原因,在服务器端我们使用的struts2-json-plugin-2.1.8插件以及json-lib-2.3-jdk15库,将数据转换为json字符串返回给浏览器。
?
服务器端struts2的结果类型如下配置:
<result name="success" type="json"> <param name="root">jsonData</param> </result>
?其中type="json" ?这个是struts2-json-plugin-2.1.8插件中定义结果类型,用以将action中的字符串当做json串返回给浏览器。这个之前测试过,没有问题。
jsp页面代码如下:
$.getJSON(url,{teacherId:empId},function(json){ json = eval("("+json+")"); if( json != null && json.result == "success" ){ alert("成功!"); } });
?上面的代码是正确的,但是如果我把
json = eval("("+json+")");
注释掉,那么程序将出错,说json.result未定义。
$.getJSON()这个方法的返回值就是json对象,但是我们访问json中的值却告诉我未定义,如果把注释去掉,
也即将返回结果就行转换一下,就可以了。
如果我使用$.ajax()这个方法,并且将dataType定义为json,这样是正确的。
不知道有没有人遇到这种情况,还希望解答一下!