在js中获取后台转换的json数据

shanxmxj 2010-08-15 12:08:18
后台框架是struts2 + ibatis + spring
页面上做了个类型的级联菜单,代码是这样的:

页面文件MobTsM-showAreaData.jsp
<td>  
<font style="color: green;">投诉分类</font> 
</td>
<td>
<select id="complainInfo" onchange="getComplainDetailsInfo();">
<s:iterator value="complainList" id="complain">
<option value="${complainId}">${complainName}</option>
</s:iterator>
</select>
</td>

<td>  
<font style="color: green;">投诉细类</font> 
</td>
<td>
<select id="complainDetails">
<s:iterator value="complainDetailList" id="complainDetailList1">
<option value="${complainDetailsId}">${complainDetailsName}</option>
</s:iterator>
</select>
</td>

通过对大类的change事件来查询细类内容 再返回到下拉框里,
change事件是通过Ajax来查询的,

function getComplainDetailsInfo(){
var details = document.getElementById('complainInfo');
var detailsName = details.options(details.selectedIndex).text;
var para = 'complainName='+detailsName;
var url="<%=basePath %>report/mobtsm/MobTsM!findComplainDetail.action";
new Ajax.Updater(
'details',
url,
{
asynchronous: true,
method:'post',
parameters:para,
onSuccess:getDeTails //回调函数
}
);
}



后台代码:
public String findComplainDetail(){
complainDetailList = getDssDaoHelper().queryForList("mobTsMT.findComplainDetailList", this.complainName);
this.moduleJson = Utils.toJsonString(complainDetailList);
return "showAreaData"; //查询完成返回到该页面
}
//这里的list,moduleJson数据都有


回调函数:
function getDeTails(){
//var str1 = eval(moduleJson);//这样也是获取不到数据。
var str = Re.responseText.evalJSON();
alert(Str);
}
//这里想通过回调函数来获取json数据,但是在这里获取不到,后台也没有报错。
//请问各位大侠是不是这样写有什么问题?应该怎么获取?谢谢了!!!在线等!


...全文
1719 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanxmxj 2010-09-13
  • 打赏
  • 举报
回复
非常感谢
这就结贴啦!
ym_pang_pang 2010-09-10
  • 打赏
  • 举报
回复
不太懂这个 只做界面……
tracyXiaoAi 2010-09-10
  • 打赏
  • 举报
回复
应该是直接就可以获取到吧
wula0010 2010-09-10
  • 打赏
  • 举报
回复
ajax获得json数据,除了后台返回的数据要按json来组织外,返回的时候:

response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");

注意application/json的json类型数据,
js里接收的返回函数:
function(O){var R=eval("("+O+")");....}
shanxmxj 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 duoduo6153 的回复:]
看你的代码应该是用了Prototype.js,这东东我好多年没用了,但愿我的回答能解决你的问题。你的回调函数应该接收一个参数,这个参数就是服务器端返回的JSON字符串,你只需要解析这个字符串即可。将回调函数改成这样就可以了:
function getDeTails(transport){
// var str = Re.responseText.evalJSON();
var str……
[/Quote]
呵呵 非常感谢!!
那这个transport参数需要在这里传么?还是直接就可以获取到。
new Ajax.Updater(
'details',
url,
{
asynchronous: true,
method:'post',
parameters:para,
onSuccess:getDeTails //回调函数
}
);
duoduo6153 2010-09-09
  • 打赏
  • 举报
回复
看你的代码应该是用了Prototype.js,这东东我好多年没用了,但愿我的回答能解决你的问题。你的回调函数应该接收一个参数,这个参数就是服务器端返回的JSON字符串,你只需要解析这个字符串即可。将回调函数改成这样就可以了:
function getDeTails(transport){
// var str = Re.responseText.evalJSON();
var str = transport.responseText.evalJSON();
alert(Str);
}
其实你已经很接近真实结果了,就差一点儿。
shanxmxj 2010-09-09
  • 打赏
  • 举报
回复
还有人么 ??
来的都有分。。。
shanxmxj 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 super_stan 的回复:]

好像没有什么问题吧,看看你其他的代码是不是有问题
[/Quote]
非常感谢!!!
总算有人回答了 !
这个问题已经解决了 但是是用的其他的方法 没有用dwr实现。
哎。。。。有人回答就可以结贴了
super_stan 2010-09-09
  • 打赏
  • 举报
回复
好像没有什么问题吧,看看你其他的代码是不是有问题
shanxmxj 2010-09-09
  • 打赏
  • 举报
回复
....看来我这帖子是结不了了。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧