最近在使用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,这样是正确的。



不知道有没有人遇到这种情况,还希望解答一下!