求助:点击修改之后的下拉框问题

寻道的 Programmer
博客专家认证
2010-09-23 09:24:08
我现在要做的是一个小的图书管理系统,有一个陈列所有图书的基本信息的页面,图书信息分别是图书名称,图书类型,单价和出版社,相应的后面都有修改和删除,发帖子怎么不能导入本地图片呢,现在要做的是当我点击修改的时候,只有那一行发生变动,图书名称那变成一个文本框,图书类型那变成一个下拉框,现在的问题是,点击修改之后,下拉框那里是空的,不知道问题出在哪里,感觉就好像请求的数据data没有传过来一样,回调函数里的东西没有执行的样子,求高手帮忙解决,如果问题没看懂,会有问题补充的,谢谢!

后台代码:

public ActionForward ajaxQueryAllTypes(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ITypeService ts = (ITypeService) ServiceFactory.getInstance().getService("typeService");
List<TypeBean> list = (List<TypeBean>) ts.queryAllTypes();
StringBuilder data = new StringBuilder();
data.append("({");
for(int i = 0; i < list.size(); i++) {
data.append(i).append(":").append(list.get(i).getTypeName()).append(",");
}
data.append("})");
PrintWriter out = response.getWriter();
out.println(data);
System.out.println(data);
return null;
}


js代码:

var trNode = $("#" + id);
var tds = trNode.children("td");
for(var i = 0;i < tds.length - 1; i++) {
var tdNode = tds.eq(i);
var text = tdNode.text();
tdNode.html("");
if(i == 1) {
var select = $("<select>");
$.get("type.do?method=ajaxQueryAllTypes", null, function(data) {
alert("回调函数");
var obj = data;
for(var id in obj) {
var optionvalue = obj[id];
alert(optionvalue);
var option = $("<option>");
option.attr("value", optionvalue);
option.text(optionvalue);
select.append(option);
}
}, "json");
tdNode.append(select);
alert(obj);
continue;
}
var input = $("<input>");
input.attr("value", text);
tdNode.append(input);
}

...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoojo 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 showbo 的回复:]

检查你返回的json字符串格式是否正确,不知道java,不过看你这句代码
Java code
data.append(i).append(":").append(list.get(i).getTypeName()).append(",");

你的字符串会多一个,号,导致json格式错误
[/Quote]
+
逗号是要的,但是最后一个貌似不要

public ActionForward ajaxQueryAllTypes(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ITypeService ts = (ITypeService) ServiceFactory.getInstance().getService("typeService");
List<TypeBean> list = (List<TypeBean>) ts.queryAllTypes();
StringBuilder data = new StringBuilder();
data.append("({");
for(int i = 0; i < list.size(); i++) {
data.append(i).append(":").append(list.get(i).getTypeName());
if (i != list.size() - 1) {
data.append(",");//最后一个不加,号
}
}
data.append("})");
PrintWriter out = response.getWriter();
out.print(data);//用print,用println会带上换行<br/> \n等
System.out.println(data);
return null;
}


var trNode = $("#" + id);
var tds = trNode.children("td");
for(var i = 0;i < tds.length - 1; i++) {
var tdNode = tds.eq(i);
var text = tdNode.text();
tdNode.html("");
if(i == 1) {
var select = $("<select>");
$.get("type.do?method=ajaxQueryAllTypes", null, function(data) {
alert("回调函数");
alert(data);//如果是object就正确的,不是或是没有弹出就说明json格式有问题
//可以用get text的方式

var obj = eval(data);//转换成js的对象
for(var id in obj) {
var optionvalue = obj[id];
alert(optionvalue);
var option = $("<option>");
option.attr("value", optionvalue);
option.text(optionvalue);
select.append(option);
}
}, "text");//修改成文本型
tdNode.append(select);
alert(obj);
continue;
}
var input = $("<input>");
input.attr("value", text);
tdNode.append(input);
}


zdy32032319861105 2010-09-24
  • 打赏
  • 举报
回复

Go 旅城通票 2010-09-24
  • 打赏
  • 举报
回复
确认你的动态页没问题吗??

$.get请求的页面出错时不会执行回调函数的

如果要处理错误,使用$.ajax,添加error错误回调
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 licip 的回复:]
把data 打印出来,看看是不是json的格式。
还有记得设置编码。要不然会有乱码。
[/Quote]
我现在在回调函数里写什么都没有反应,什么原因呢?
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 showbo 的回复:]
检查你返回的json字符串格式是否正确,不知道java,不过看你这句代码

Java code
data.append(i).append(":").append(list.get(i).getTypeName()).append(",");

你的字符串会多一个,号,导致json格式错误
[/Quote]
不行,最后的逗号去掉了,回调函数里的东西压根就没有执行,alert("回调函数");这句话没有弹出来啊
  • 打赏
  • 举报
回复
不行,最后的逗号去掉了,回调函数里的东西压根就没有执行,alert("回调函数");这句话没有弹出来啊
licip 2010-09-24
  • 打赏
  • 举报
回复
把data 打印出来,看看是不是json的格式。
还有记得设置编码。要不然会有乱码。
liux466713 2010-09-24
  • 打赏
  • 举报
回复

for(int i = 0; i < list.size(); i++) {
data.append(i).append(":").append(list.get(i).getTypeName()).append(",");
}


最终会多一个逗号出来.
你都写了alert(obj);这句了,再检查检查.
孟子E章 2010-09-24
  • 打赏
  • 举报
回复
alert(data)

贴出来
Go 旅城通票 2010-09-24
  • 打赏
  • 举报
回复
检查你返回的json字符串格式是否正确,不知道java,不过看你这句代码
data.append(i).append(":").append(list.get(i).getTypeName()).append(",");

你的字符串会多一个,号,导致json格式错误

52,797

社区成员

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

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