首页 新闻 会员 周边

怎么获取返回json值Datatable中ID对应的Rate值,我表达有点困难兄弟们先进来看下。

0
[已解决问题] 解决于 2017-03-29 13:12

我要做的就是列表,方法是要获取更新的那列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;
                })
            }
        });
复制代码
你猜丶的主页 你猜丶 | 初学一级 | 园豆:183
提问于:2017-03-24 16:38
< >
分享
最佳答案
0

一开始是数据就传错了,然后改正好了

 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;
                    }               
                }
你猜丶 | 初学一级 |园豆:183 | 2017-03-29 13:11
其他回答(1)
0

看不懂你的需求是什么.

是ajax更新表中的一列吗

吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 16:46

是的,获取要更新的那列id,然后从返回的DataTable查找相同列的ID,把对应的ExchangeRate值更新上去

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 16:49

@你猜丶: 那你把table的tr赋上id吧.然后直接用id选择器找到对应的行.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 16:55

@吴瑞祥: 这个id不是那个Id,是从数据库获取的行数据Id,然后对应行的id我已经获取了,你看代码,意思就是说id = jsonRete[i].ExchangeID这个条件成立后,我不知道怎么获取 jsonRete[i].ExchangeID对应值的ExchangeRate

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:03

@你猜丶:你的意思是  jsonRete[i].ExchangeRate吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:13

@吴瑞祥: 嗯嗯,就是要根据 jsonRete[i].ExchangeID的值找对应的ExchangeRate,我这样写jsonRete[i].ExchangeRate是错的,[i]值得ExchangeRate是不对应ExchangeID的。

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:15

@你猜丶: 意思是:你有一个{id=1,value=1},{id=2,value=2}的数组.

然后你循环到a={id=1,value=1}的时候.a.id=1,a.value=2 ?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:23

@吴瑞祥: 不是哦,简单来说就是DataTable中有两列,一个ID一个name,然后我现在获取到了ID值,我要根据这个ID值找到name值

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:25

@你猜丶: 话说在后端传的时候就传过来,这样不就可以取了吗?为何在后端不传过来呢

支持(0) 反对(0) 最佳损友。 | 园豆:63 (初学一级) | 2017-03-24 17:26

@11点后要睡觉: 我在后台是把整个DataTable的返回了,因为在后台我不知道ID的值,我要在前台获取要更新的列的ID,然后放入DataTable中查找对应的ExchangeRate

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:28

@你猜丶: id和name不是在行吗?为什么会还需要找..你找到行对象.直接.name

我觉得你需要冷静一下.别再想了.睡一觉

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:31

@吴瑞祥: 我要更新那个name行,因为name值在数据库中是不断变化的,然后我现在就是做更新,看代码,通过jsonRete[i].ExchangeRate我已经获取到了ID值,现在我要获取ID对应的name值更新上去

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:34

@你猜丶: 这个ExchangeRate和ExchangeID的关系在哪里?是不是在数据库的用一行来表示?

同一行的ExchangeID和他对应的ExchangeRate值?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:37

@吴瑞祥:对啊,在数据库中ID和name是相互对应的,数据不是一行哦,我是把所有行查出来了,所以我得到ID后要去找对应的name值

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:38

@你猜丶: jsonRete[i]是不是数据表里的一行?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:41

@吴瑞祥: jsonRete[i]是相当于for循环值的index值,就相当于ExchangeID[i]中的 i

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:46

@你猜丶: jsonRete不是你从后台传回来的table吗.

 jsonRete[i]不是table里的row吗.怎么会跑到ExchangeID[i]

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:48

@吴瑞祥: 不是哦,你看到代码哦

success: function (JSON){

var jsonRete = eval(JSON);

}

后台是通过JSON将整个DataTable返回

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 17:50

@你猜丶: 对啊.所以jsonRete 不就是一个表的数据

jsonRete [i]不就是一行的数据?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 17:51

@吴瑞祥: 额,对,是的,是我没理解你的意思,那就是说 jsonRete[i].ExchangeID=jsonRete [i].ExchangeRate,但是我得到值是空,是因为不应该用 if (i > 0) {}  i++;吗?那我应该用什么呢?

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:03

@你猜丶: 你的需求是:ui上有一个table.调用ajax获取这个table的数据.然后把对应行的ExchangeRate列值更新上去是吗.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 18:06

@吴瑞祥: 嗯嗯,要根据行的ExchangeID更新上去

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:08

@吴瑞祥: 我有尝试用这种方法,但是他会把获取到的第一个行值给更新到整列上

  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;
                            }
                        }
支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:10

@你猜丶: in了i代表的就是一行.所以就不要jsonRete[i]了.

还是我最早说的那个建议.你不要循环ui表.要循环jsonRete,

在展示的时候把id绑定到ui的行上面.

在循环jsonRete的时候直接通过jqueryid选择器找到对应的ui上的行.找到就赋值.找不到就跳过.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 18:14

@吴瑞祥: 你说的id选择器是什么?

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:27

@你猜丶: <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(输入)}

大概是这样了.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 18:30

@吴瑞祥: 他那个datatable查询出的顺序与原本展示的数据顺序不一致耶

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:34

@吴瑞祥: 所以我要获取原本的ExchangeID然后才能获取到对应的ExchangeRate值

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:36

@你猜丶: 哎.你又不是整个页面重绘.你只是要改一列的值.干嘛纠结顺序不顺序的...搞不懂你的想法

说实话我真的觉得你不要再想了.思维都混乱的.赶紧睡一觉让脑子休息一下.醒来你就会发现问题非常简单了.

真的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 18:43

@吴瑞祥: 大哥,我真是败给你了,不是我思路乱,他本身有5列数据,我要刷新的只是其中一列,难道我数据不要对着?

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:50

@吴瑞祥: 如果是整个列表刷新,我直接给个table的局部刷新,那不是更简单,我要刷的只是其中一列,定时每秒刷新,我要是整个表刷新,服务器受不了

支持(0) 反对(0) 你猜丶 | 园豆:183 (初学一级) | 2017-03-24 18:52

@你猜丶: 数据当然是对着的.不是用id选择器取到这个id对应的ui上的行了吗?

为什么会不对呢?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-24 18:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册