数据正常返回,填充到table出现问题,盼指教

dxy2798 2018-03-21 05:07:11
如题:表格里没有数据,而且一闪就没有了。。。盼指教


<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>人名模糊查询</title>
<script type="text/javascript" src="scripts/jquery-3.2.1.js"></script>
<script type="text/javascript" src="scripts/jquery.blockUI.js"></script>

<script type="text/javascript">

function query(){
var emp = $("#in").val();
if(emp != ""){
var url = "EmployeeServlet?method=empDetailes";
var args = {"employeename": emp,"time":new Date()};
$.getJSON(url,args,function(data){
var obj = eval(data);//可正常返回数据
$("#empdetails tbody").html("");
$("#empdatails").show();
alert(obj.length); //到这里也没有问题
for (var i = 0; i < obj.length; i++) {
$("#id").text(obj[i].employeeId);
$("#name").text(obj[i].name);
$("#tel").text(obj[i].tel);
$("#phone").text(obj[i].phone);
$("#email").text(obj[i].email);
$("#address").text(obj[i].address);
}
});
}
}
</script>
</head>
<body>
<form action="">
<h1>模糊查询</h1>
请输入姓或名<input type="text" id="in"/>
<input type="submit" id="go" onclick="query()"/>
</form>
<center>
<table id="empdatails" border="1" cellspacing="0" cellpadding="5" style="display: none">
<tr>
<th>Id</th>
<th>Name</th>
<th>Tel</th>
<th>Phone</th>
<th>Email</th>
<th>Address</th>
</tr>
<tr>
<td id="id"></td>
<td id="name"></td>
<td id="tel"></td>
<td id="phone"></td>
<td id="email"></td>
<td id="address"></td>
</tr>
</table>
</center>
</body>
</html>
...全文
619 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxy2798 2018-03-24
  • 打赏
  • 举报
回复
经过楼上各位的指导,终于可以了。感谢各位提携后学,自学很艰难,一个别人看很简单的问题,能困扰好久,好在有各位,谢谢!
  • 打赏
  • 举报
回复
页面table标签里面可以填上 tbody标签, 然后for循环往tbody里面插入html语言拼接,就可以
诺丽果 2018-03-23
  • 打赏
  • 举报
回复
在 for (var i = 0; i < obj.length; i++) 循环里直接拼td
诺丽果 2018-03-23
  • 打赏
  • 举报
回复
引用 13 楼 dxy2798 的回复:
还想再问一句,各位轻喷啊... 数据返回有很多,但是最后table里只有最后的一行,是哪里写错了,

                     for (var i = 0; i < obj.length; i++) {
                            alert(obj[i].name);//这里可以循环取得姓名
                             $("#id").text(obj[i].employeeId);
                             $("#name").text(obj[i].name);
                             $("#tel").text(obj[i].tel);
                             $("#phone").text(obj[i].phone);
                             $("#email").text(obj[i].email);
                             $("#address").text(obj[i].address);
                     }
因为你的
 <tr>
              <td id="id"></td>
              <td id="name"></td>
              <td id="tel"></td>
              <td id="phone"></td>
              <td id="email"></td>
              <td id="address"></td>
          </tr>
只有一段啊,所以最后显示的这段tr的值是你json里面最后一条数据
dxy2798 2018-03-23
  • 打赏
  • 举报
回复
@shzhh1992 谢谢回复,麻烦说说怎么直接塞入行,是说拼接<tr><td>吗?还是有办法直接把json直接装到table里?
shzhh1992 2018-03-23
  • 打赏
  • 举报
回复
引用 13 楼 dxy2798 的回复:
还想再问一句,各位轻喷啊... 数据返回有很多,但是最后table里只有最后的一行,是哪里写错了,

                     for (var i = 0; i < obj.length; i++) {
                            alert(obj[i].name);//这里可以循环取得姓名
                             $("#id").text(obj[i].employeeId);
                             $("#name").text(obj[i].name);
                             $("#tel").text(obj[i].tel);
                             $("#phone").text(obj[i].phone);
                             $("#email").text(obj[i].email);
                             $("#address").text(obj[i].address);
                     }
这样循环只能是每次循环到的数据放入那一行的,所以就只会放入最后一条数据,你应该直接塞入行,而不是塞入没一行的数据
dxy2798 2018-03-23
  • 打赏
  • 举报
回复
还想再问一句,各位轻喷啊... 数据返回有很多,但是最后table里只有最后的一行,是哪里写错了,

                     for (var i = 0; i < obj.length; i++) {
                            alert(obj[i].name);//这里可以循环取得姓名
                             $("#id").text(obj[i].employeeId);
                             $("#name").text(obj[i].name);
                             $("#tel").text(obj[i].tel);
                             $("#phone").text(obj[i].phone);
                             $("#email").text(obj[i].email);
                             $("#address").text(obj[i].address);
                     }
dxy2798 2018-03-23
  • 打赏
  • 举报
回复
因为下面写好了表头和字段的id,不能在上面的循环里给每一行赋值吗?现在是前面赋的值被后面的覆盖了,所以只留下最后一个。我百度了一圈,是不是这样的问题简单,没找到解法,麻烦帮忙写个样子,伪码也行啊。
xiongdejun 2018-03-22
  • 打赏
  • 举报
回复
先不说你的js是否有问题了。你的html就有点问题,既然使用ajax提交,那么为什么还要用from表单呢。而你的还是submit,当你点击的时候你会发现浏览器刷新了一些。 把你之前加载的数据又重新初始化了。所以把submit 换成 button 然后把from表单去掉
------ 2018-03-22
  • 打赏
  • 举报
回复
你可以先判断下问题点在哪里,如果后台有数据,但是table没有显示,那就是后台展示数据的问题,你把table直接赋个默认值,比如 $("#id").text(1); $("#name").text(2); $("#tel").text(3); $("#phone").text(4); $("#email").text(5); 如果页面上能显示,说明还是填充问题。你的data数据是什么格式的? for(。。。。。。){ debugger; 加个这个F12一步步调试下去 }
诺丽果 2018-03-22
  • 打赏
  • 举报
回复
你看看你的json数据返回是什么样 贴出来看看 再看看你的obj[i].employeeId,obj[i].name等这些值取到没,感觉应该是你的json返回的格式跟你自己的这些取值方式不匹配
  • 打赏
  • 举报
回复
把method=empDetailes写到args里面试试
open_yu 2018-03-22
  • 打赏
  • 举报
回复
不要循环,看看有没有数据。
dxy2798 2018-03-22
  • 打赏
  • 举报
回复
还真是,改成button后单条记录出来了
dxy2798 2018-03-22
  • 打赏
  • 举报
回复
谢谢各位回复,我才学这个,很菜。 单条返回的记录是这样的:[{"employeeId":305,"name":"张三","email":"zhangsan@163.com","salary":0.0,"tel":"12345678","phone":"12345678910","address":"长安街1号"}] 多条是:[{"employeeId":305,"name":"张三","email":"zhangsan@163.com","salary":0.0,"tel":"12345678","phone":"12345678910","address":"长安街1号"},{"employeeId":306,"name":"李四","email":"lisi@sina.com.cn","salary":0.0,"tel":"23456789","phone":"11223344556","address":"永安里甲2号"}]
_小_小_ 2018-03-21
  • 打赏
  • 举报
回复
$("#id") id只会取到第一个 dom 这里应该是 拼接 td 字符串 然后append 到 table
dxy2798 2018-03-21
  • 打赏
  • 举报
回复
谢谢回复,我明天试试,不过我觉得不会有效果,你看那两个注释,数据是可以返回,就是进不了table,下面的代码我以前就这么写过,区别就是这次返回的json是一组数据。结果就不行了
qq_41228556 2018-03-21
  • 打赏
  • 举报
回复
你把submit 换成 button 试试
dxy2798 2018-03-21
  • 打赏
  • 举报
回复
看了,数据没进去,是哪儿写错了吧
imsprojo2FAN 2018-03-21
  • 打赏
  • 举报
回复
F12 console

81,095

社区成员

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

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