日期:2014-05-19  浏览次数:20743 次

服务器将ArrayList对象转化为JSON发到客户端怎么客户端解析不了?
我想演示级联下拉菜单的选择第一个框选择一个身份,然后发请求到服务器查找到身份的城市信息
 并以JSON格式发回客户端,用的是struts2框架

  这个是我的AJAX请求:
  $(function(){
$("#proAddress").change(function(){
if($(this).val()!="-1"){
$.post(
"ajaxFindClass.action?dt="+new Date().getTime(),
{"proId":$(this).val()},
function(data){ //data应该为找到城市的信息的JSON格式啊
alert(data.d);
var className=data.d;
for(var cn in className){
$("#className").options.add(new Option(cn.name,cn.id));
}
},
"json"
);
}  
});
  })
当我测试的时候 发现如果服务器端List为空,则客户端可以弹出框,当服务器端List不为空时警告框都不弹出了
  到底是哪里错了,高手指教

------解决方案--------------------
把最后生成的JSON串发出来看看嘛。 要不然怎么知道呢?
------解决方案--------------------
什么级联不级联的 生成的josn就是个格式化的字符串 输出就行了
出错肯定是生成josn的时候
------解决方案--------------------
我看不到你的action,但是struts2可以返回json数据。先看一下你的struts配置文件是否出错,
<package name="ajax" extends="json-default">
<action name="getprovince" class="ProAction">
<result type="json"></result>
</action>
</package>
结果返回类型是json,如果还不行的话,可以把.post换成.ajax试试,级联我一般用.ajax
$.ajax({
url:"ajaxFindClass.action?dt="+new Date().getTime(),
type:"POST",
data:{"proId":$(this).val()},
success:function(data){ 
alert(data.d);
var className=data.d;
for(var cn in className){
$("#className").options.add(new Option(cn.name,cn.id));
}

}
});
------解决方案--------------------
服务器端生成的有没有问题??输出来看看
------解决方案--------------------
用一个jakson插件吧,省掉很多麻烦...