jquery把后台的list中的数据填充到select的问题

anycery 2011-02-27 06:51:54
下面是我的代码:后台的数据出来了,但是是一个整字符串,不是想要的单个的比如:id有10个:1,2,3....结果出来的就是一个123字符串,不知道问题出在哪里

function subs(bid) //函数名
{

$.ajax({ //ajax方法
type:"post",
dataType:"xml",
url:"<%=request.getContextPath()%>/MeaBackConsTeam.do",
data:{bid:bid },
success:function(data){

$(data).find("root").each(function(){

var team_id=$(this).children("consTeamId").text(); //节点值
var team_name=$(this).children("consTeamName").text(); //节点值
$('#selconsTeam').append("<option value='" + team_id + "'>" + team_name + "</option>");

})
}
});
}
...全文
1006 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
anycery 2011-03-02
  • 打赏
  • 举报
回复
谢谢各位,我自己解决了,
jquery把值给串起来了,主要的问题出在后台输出xml,因为只有一个root根节,循环root只有一次,jquery就很负责的把所有值给拿出来,并串起来;如果循环consTeamId节点话,循环有多次,但问题是自己循环自己节点数量可以,但是数值却得不到,解决的方法就是在root与consTeamId之间加一个node的父节点,node也要与consTeamId一起循环,如此在页面就循环node就可以了
MengXuer 2011-03-01
  • 打赏
  • 举报
回复
支持

[Quote=引用 7 楼 lgq_0714 的回复:]
建议使用json,后台将List转换成json格式传到前台,然后在前台通过js将传过去的json转换成js对象数组,这样使用起来就非常方便了
[/Quote]
lmzpp 2011-03-01
  • 打赏
  • 举报
回复
没有你那么复杂吧?
<tr>
<td>游戏种类</td>
<td>
<input class="easyui-combobox"
name="gameDto.gameTypeId"
url="gameInfo!findGameTypeInfo.action"
valueField="gameTypeId"
textField="gameTypeName"
multiple="true"
panelHeight="auto"/>
</td>
</tr>
wsxing008 2011-03-01
  • 打赏
  • 举报
回复
我感觉是这样的,你后台循环把所有值都输出了,但是前台得到的时候,consTeamId这个id是重复的,不能唯一确定一个id,所以你得到的时候有可能练成一体了
lgq_0714 2011-02-28
  • 打赏
  • 举报
回复
建议使用json,后台将List转换成json格式传到前台,然后在前台通过js将传过去的json转换成js对象数组,这样使用起来就非常方便了
anycery 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]
贴代码没用,需要从浏览器端看从服务器返回来的数据才有用,例如你的这个没有使用CDATA,中间出现特殊字符会把xml给破坏的。所以才需要看你服务器端返回来的数据。
[/Quote]

我用alert弹出数据都是正常的数据没有特殊字符,但就是把值给串起来了
ituuz 2011-02-27
  • 打赏
  • 举报
回复
用json多方便
Inhibitory 2011-02-27
  • 打赏
  • 举报
回复
贴代码没用,需要从浏览器端看从服务器返回来的数据才有用,例如你的这个没有使用CDATA,中间出现特殊字符会把xml给破坏的。所以才需要看你服务器端返回来的数据。
anycery 2011-02-27
  • 打赏
  • 举报
回复
package com.longhao.action.meaShare;

import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.longhao.daoimpl.pro.ProConstDAO;
import com.longhao.model.pro.ConstructionTeam;

/**
*

*
*/
public class MeaBackConsTeamAction extends Action{

private ConstructionTeam consTeam;
private ProConstDAO proDAO;

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();

String bid=request.getParameter("bid");

System.out.println("标段"+bid);
proDAO=new ProConstDAO();

List<ConstructionTeam> constList=proDAO.findByBidsegmentId(Long.parseLong(bid));
//String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
//out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
out.println("<root>");
if(constList!=null)
{
for(int i=0;i<constList.size();i++)
{
consTeam=new ConstructionTeam();
consTeam=(ConstructionTeam)constList.get(i);
//out.println("<node id="+i+">");
out.println("<consTeamId> " + consTeam.getId() + " </consTeamId>");
out.println("<consTeamName> " + consTeam.getConsTName() + " </consTeamName>");
//out.println("</node>");
}

}

out.println("</root>");


return null;
}




}
把后台代码也贴上
anycery 2011-02-27
  • 打赏
  • 举报
回复
需要的内容全部组成一个字符串了
Inhibitory 2011-02-27
  • 打赏
  • 举报
回复
先输出你后台返回来的是xml的内容,是正确的xml字符串?

81,122

社区成员

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

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