$(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 (){})中他就能刷新全部。
$("#table_Rate tbody").find("tr").each(function () { $(this).find("td:eq(3)").html("完成"); })
為何不在ajax success裡這樣就好?是你要的?
兄弟,你太机智了,崇拜
不对,不对,他数据不是我写的这样的直接赋值,他是遍历出来的,一遍一遍的走$("#table_Rate tbody").find("tr").each(function () {},这样的话他的数据每行<td>都是不一样的,像你这样的话,他就只走了一遍,数据都是一样的了
嘿嘿,我刚太激动了,我太傻了,如果是这样的话我直接套到外面那个大$("#table_Rate tbody").find("tr").each(function () {}就好了,不是这样的的。
@你猜丶:
不知道你的實際情況,只能照你給的線索改,自行優化吧
@RosonJ: 不行啊,触发不了function Refresh()啊
@你猜丶:
你的if不成立?
@RosonJ: 之前可以的啊,之前idList都可以正常的获取到值,哦哦他是有报错的,说ajax对象不支持“find”属性或方法,应该是这句出了问题data: { ExchangeID: $this.find("a").attr("data-id") },
@你猜丶:
試試把變數名稱換掉
@RosonJ: 我觉得不能放在
$("#table_Rate tbody").find("tr").each(function () {
idList += $(this).find("a").attr("data-id")+",";
}
这个里面啊,这个的作用就是用来遍历idList,循环中就让他进入function Refresh($this)中,那他就只有一个值啊。
@你猜丶:
一是傳入idList,回傳集合後跑回圈
二是跑回圈傳入id,回傳單一結果
我的是二,還是說你的方法不支援單一id
@RosonJ:不要单一的,一开始我是用单一,但是一条条查询服务器伤不起,才想用集合
@你猜丶:
那就對success 的data跑迴圈塞給tr吧
@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)");
就行了,我去
@RosonJ: 不行,不行,他现在会每行循环10遍,因为遍历数是10个,然后每个格子等于循环数的最后一个,有毒啊
兄弟,我知道了这不是那个问题了,这是我数据处理问题,谢谢你
@你猜丶:
這是javascript的特性,看到你前個回復我就知道會這樣了..