我要做的就是列表,方法是要获取更新的那列id,然后从返回的DataTable查找相同列的ID,把对应的ExchangeRate值更新上去
代码如下↓,兄弟们,拜托了,详细点,新手菜鸟,入门都还有困难的那种
success: function (JSON) { //遍历出<td>数值 var jsonRete = eval(JSON); var i = 0; $("#table_Rate tbody").find("tr").each(function () { if (i > 0) { //ID id = $(this).find("a").attr("data-id"); var refresh_exchangeRate = $(this).find("td:eq(3)");//第四行<td> var refresh_delete = $(this).find("td:eq(4)");//第五行<td> refresh_exchangeRate.html("123"); alert(jsonRete[i].ExchangeID); //id->JSON if (id = jsonRete[i].ExchangeID) { if (jsonRete[i].ExchangeRate == 100) { //进度列显示 refresh_exchangeRate.html("完成"); //操作列显示 refresh_delete.html("<a><i class='fa fa-trash-o ' style='color:#888;' ></i></a>"); } else {; //进度列显示 refresh_exchangeRate.html(jsonRete[i].ExchangeRate); } } } i = i + 1; }) } });
一开始是数据就传错了,然后改正好了
success: function (data) { var jsonRete = eval(data); for (var i in jsonRete) { if (jsonRete[i].ExchangeID == id) { if (jsonRete[i].ExchangeRate == 100) { //进度列显示 refresh_exchangeRate.html("完成"); //操作列显示 refresh_delete.html("<a><i class='fa fa-trash-o' style='color:#888;'></i></a>"); } else { //进度列显示 refresh_exchangeRate.html(jsonRete[i].ExchangeRate); } } break; } }
看不懂你的需求是什么.
是ajax更新表中的一列吗
是的,获取要更新的那列id,然后从返回的DataTable查找相同列的ID,把对应的ExchangeRate值更新上去
@你猜丶: 那你把table的tr赋上id吧.然后直接用id选择器找到对应的行.
@吴瑞祥: 这个id不是那个Id,是从数据库获取的行数据Id,然后对应行的id我已经获取了,你看代码,意思就是说id = jsonRete[i].ExchangeID这个条件成立后,我不知道怎么获取 jsonRete[i].ExchangeID对应值的ExchangeRate
@你猜丶:你的意思是 jsonRete[i].ExchangeRate吗?
@吴瑞祥: 嗯嗯,就是要根据 jsonRete[i].ExchangeID的值找对应的ExchangeRate,我这样写jsonRete[i].ExchangeRate是错的,[i]值得ExchangeRate是不对应ExchangeID的。
@你猜丶: 意思是:你有一个{id=1,value=1},{id=2,value=2}的数组.
然后你循环到a={id=1,value=1}的时候.a.id=1,a.value=2 ?
@吴瑞祥: 不是哦,简单来说就是DataTable中有两列,一个ID一个name,然后我现在获取到了ID值,我要根据这个ID值找到name值
@你猜丶: 话说在后端传的时候就传过来,这样不就可以取了吗?为何在后端不传过来呢
@11点后要睡觉: 我在后台是把整个DataTable的返回了,因为在后台我不知道ID的值,我要在前台获取要更新的列的ID,然后放入DataTable中查找对应的ExchangeRate
@你猜丶: id和name不是在行吗?为什么会还需要找..你找到行对象.直接.name
我觉得你需要冷静一下.别再想了.睡一觉
@吴瑞祥: 我要更新那个name行,因为name值在数据库中是不断变化的,然后我现在就是做更新,看代码,通过jsonRete[i].ExchangeRate我已经获取到了ID值,现在我要获取ID对应的name值更新上去
@你猜丶: 这个ExchangeRate和ExchangeID的关系在哪里?是不是在数据库的用一行来表示?
同一行的ExchangeID和他对应的ExchangeRate值?
@吴瑞祥:对啊,在数据库中ID和name是相互对应的,数据不是一行哦,我是把所有行查出来了,所以我得到ID后要去找对应的name值
@你猜丶: jsonRete[i]是不是数据表里的一行?
@吴瑞祥: jsonRete[i]是相当于for循环值的index值,就相当于ExchangeID[i]中的 i
@你猜丶: jsonRete不是你从后台传回来的table吗.
jsonRete[i]不是table里的row吗.怎么会跑到ExchangeID[i]
@吴瑞祥: 不是哦,你看到代码哦
success: function (JSON){
var jsonRete = eval(JSON);
}
后台是通过JSON将整个DataTable返回
@你猜丶: 对啊.所以jsonRete 不就是一个表的数据
jsonRete [i]不就是一行的数据?
@吴瑞祥: 额,对,是的,是我没理解你的意思,那就是说 jsonRete[i].ExchangeID=jsonRete [i].ExchangeRate,但是我得到值是空,是因为不应该用 if (i > 0) {} i++;吗?那我应该用什么呢?
@你猜丶: 你的需求是:ui上有一个table.调用ajax获取这个table的数据.然后把对应行的ExchangeRate列值更新上去是吗.
@吴瑞祥: 嗯嗯,要根据行的ExchangeID更新上去
@吴瑞祥: 我有尝试用这种方法,但是他会把获取到的第一个行值给更新到整列上
for(var i in jsonRete) { if (id = jsonRete[i].ExchangeID) { if (jsonRete[i].ExchangeRate == 100) { //进度列显示 refresh_exchangeRate.html("完成"); //操作列显示 refresh_delete.html("<a><i class='fa fa-trash-o ' style='color:#888;' ></i></a>"); } else {; //进度列显示 refresh_exchangeRate.html(jsonRete[i].ExchangeRate); } break; } }
@你猜丶: in了i代表的就是一行.所以就不要jsonRete[i]了.
还是我最早说的那个建议.你不要循环ui表.要循环jsonRete,
在展示的时候把id绑定到ui的行上面.
在循环jsonRete的时候直接通过jqueryid选择器找到对应的ui上的行.找到就赋值.找不到就跳过.
@吴瑞祥: 你说的id选择器是什么?
@你猜丶: <table><tbody><tr id="rete_1"><td>a</td></tr></tbody></table>
for(var i=0,i<jsonRete.length,i++)
{$("#rete_"+i).find("td:eq(3)").html(输入)}
大概是这样了.
@吴瑞祥: 他那个datatable查询出的顺序与原本展示的数据顺序不一致耶
@吴瑞祥: 所以我要获取原本的ExchangeID然后才能获取到对应的ExchangeRate值
@你猜丶: 哎.你又不是整个页面重绘.你只是要改一列的值.干嘛纠结顺序不顺序的...搞不懂你的想法
说实话我真的觉得你不要再想了.思维都混乱的.赶紧睡一觉让脑子休息一下.醒来你就会发现问题非常简单了.
真的.
@吴瑞祥: 大哥,我真是败给你了,不是我思路乱,他本身有5列数据,我要刷新的只是其中一列,难道我数据不要对着?
@吴瑞祥: 如果是整个列表刷新,我直接给个table的局部刷新,那不是更简单,我要刷的只是其中一列,定时每秒刷新,我要是整个表刷新,服务器受不了
@你猜丶: 数据当然是对着的.不是用id选择器取到这个id对应的ui上的行了吗?
为什么会不对呢?