日期:2014-05-16  浏览次数:20344 次

关于jQuery的$.getJSON()方法返回值问题

?

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

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