首页 新闻 会员 周边

ajax刷新数据。

0
[已解决问题] 解决于 2017-03-28 17:17
复制代码
$(document).ready(function () {
        setInterval("RefreshData()", 5000);
    });
    function RefreshData() {
        var idList = "";
        var refresh_exchangeRate = "";
        var refresh_delete = "";
        $("#table_Rate tbody").find("tr").each(function () {
            if ($(this).find("a").attr("data-id") != null && $(this).find("a").attr("data-id") != "")
            {
                idList += $(this).find("a").attr("data-id")+",";
            }          
            refresh_exchangeRate = $(this).find("td:eq(3)");
            refresh_delete = $(this).find("td:eq(4)");
        })
            $.ajax({
                type: "post",
                url: "/HomePage/ExchangeListRefresh",
                async: true,
                data:{ExchangeID:idList },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest, textStatus, errorThrown);
                },
                success: function (data) {
                 refresh_exchangeRate.html("完成");
                }
            });      
    }
复制代码

怎么说呢,有点复杂,首先先看到idList ,idList 是要做一个集合,所以要放在一个单独的

 $("#table_Rate tbody").find("tr").each(function (){})让他循环得到数据
然后在
 $.ajax({
data:{ExchangeID:idList },
     })
传到后台,
$.ajax()他是不能和idList 放在同一个
$("#table_Rate tbody").find("tr").each(function (){})中的,不然idList 循环到一条数据就会进入后台。
然后看我现在的这种做法↑代码,他现在出现了问题,就是
 success: function (data)
{    refresh_exchangeRate.html(
"完成"); }
refresh_exchangeRate.html("完成"); 这句是用来循环td列表的,一页显示十条数据,他只会刷新最后一条也就是第十条上的数据,前9条是不会刷新,我要的是全部刷新,很奇怪,
我尝试着,在ajax外再套一个
$("#table_Rate tbody").find("tr").each(function (){})
没有用,还是刷新最后一条,我不懂为什么会这样,不科学。
然而我将这句refresh_exchangeRate.html("完成");放在ajax外或者放在第一个$("#table_Rate tbody").find("tr").each(function (){})中他就能刷新全部。

        
你猜丶的主页 你猜丶 | 初学一级 | 园豆:183
提问于:2017-03-24 13:56
< >
分享
最佳答案
0
$("#table_Rate tbody").find("tr").each(function () {
    $(this).find("td:eq(3)").html("完成");
})

為何不在ajax success裡這樣就好?是你要的?

奖励园豆:5
RosonJ | 老鸟四级 |园豆:4910 | 2017-03-24 14:10

兄弟,你太机智了,崇拜

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:13

不对,不对,他数据不是我写的这样的直接赋值,他是遍历出来的,一遍一遍的走$("#table_Rate tbody").find("tr").each(function () {},这样的话他的数据每行<td>都是不一样的,像你这样的话,他就只走了一遍,数据都是一样的了

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:18

嘿嘿,我刚太激动了,我太傻了,如果是这样的话我直接套到外面那个大$("#table_Rate tbody").find("tr").each(function () {}就好了,不是这样的的。

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:21

@你猜丶: 

$(document).ready(function () {
    setInterval("RefreshData()", 5000);
});

function RefreshData() {
    var idList = "";
    var refresh_exchangeRate = "";
    var refresh_delete = "";
    $("#table_Rate tbody").find("tr").each(function () {
        if ($(this).find("a").attr("data-id") != null && $(this).find("a").attr("data-id") != "") {
            var _$this = $(this);
            Refresh(_$this);
        }
    })
}

function Refresh($this) {
    $.ajax({
        type: "post",
        url: "/HomePage/ExchangeListRefresh",
        async: true,
        data: { ExchangeID: $this.find("a").attr("data-id") },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest, textStatus, errorThrown);
        },
        success: function (data) {
            $this.find("td:eq(3)").html("完成");
        }
    });
}

不知道你的實際情況,只能照你給的線索改,自行優化吧

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 14:25

@RosonJ: 不行啊,触发不了function Refresh()啊

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:29

@你猜丶: 

你的if不成立?

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 14:32

@RosonJ: 之前可以的啊,之前idList都可以正常的获取到值,哦哦他是有报错的,说ajax对象不支持“find”属性或方法,应该是这句出了问题data: { ExchangeID: $this.find("a").attr("data-id") },

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:39

@你猜丶: 

試試把變數名稱換掉

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 14:49

@RosonJ: 我觉得不能放在

$("#table_Rate tbody").find("tr").each(function () {

idList += $(this).find("a").attr("data-id")+",";

}

这个里面啊,这个的作用就是用来遍历idList,循环中就让他进入function Refresh($this)中,那他就只有一个值啊。

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 14:57

@你猜丶: 

一是傳入idList,回傳集合後跑回圈

二是跑回圈傳入id,回傳單一結果

我的是二,還是說你的方法不支援單一id

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 15:03

@RosonJ:不要单一的,一开始我是用单一,但是一条条查询服务器伤不起,才想用集合

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 15:05

@你猜丶: 

那就對success 的data跑迴圈塞給tr吧

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 15:08

@RosonJ: 兄弟,我发现原因了

var refresh_exchangeRate = "";

var refresh_delete = "";

refresh_exchangeRate = $(this).find("td:eq(3)");

refresh_delete = $(this).find("td:eq(4)");

换成

var refresh_exchangeRate = $(this).find("td:eq(3)");

var refresh_delete = $(this).find("td:eq(4)");

就行了,我去

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 15:11

@RosonJ: 不行,不行,他现在会每行循环10遍,因为遍历数是10个,然后每个格子等于循环数的最后一个,有毒啊

兄弟,我知道了这不是那个问题了,这是我数据处理问题,谢谢你

你猜丶 | 园豆:183 (初学一级) | 2017-03-24 15:19

@你猜丶: 

這是javascript的特性,看到你前個回復我就知道會這樣了..

RosonJ | 园豆:4910 (老鸟四级) | 2017-03-24 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册