You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ajax调用成功后无法选中表格tr更新td文本值的问题求助

问题根因

你的代码存在3个问题导致更新失效:

  • 元素查找逻辑错误:$("#EditTbl tbody tr."+data.trIndex) 选中的是目标<tr>元素本身,你直接对这个jQuery对象调用.eq(),本质是在匹配到的tr集合里按索引取tr,完全没有查找tr内部的td元素,自然无法写入值。
  • td索引匹配错误:对照你的HTML结构,tr内td从0开始计数的顺序为:
    • 0:Date列
    • 1:BL Number列
    • 2:Pick Up Number列
    • 3:Carrier列
    • 4:Submitted By列
    • 5:Edit按钮列
      你原代码把Pick Up Number赋值给索引3的位置,会和Carrier列错位,Submitted By赋值给索引5会直接覆盖Edit按钮所在列。
  • 选择器兼容隐患:如果data.trIndex是纯数字开头的值,直接拼接成类选择器会违反CSS选择器语法规则,直接导致选不到目标tr。
修正代码

只需要修改ajax成功回调内的逻辑即可:

function SaveEditInfo(id,pickup,carrier) {
$.ajax({
    type: "POST",
    url: "/Loading/SaveEditInfo",
    data: { id: id, pickup: pickup,carrier:carrier},
    success: function (data) {
        // 选中目标行,兼容数字开头的索引值
        var $tblRow = $("#EditTbl tbody tr[class*='"+ data.trIndex +"']");
        // 加空判断避免后续报错
        if (!$tblRow.length) return;
        
        // 先取到行内所有td,再按正确索引赋值
        var $tdList = $tblRow.find("td");
        $tdList.eq(2).text(data.pickUpNo); // Pick Up Number列
        $tdList.eq(3).text(data.carrier); // Carrier列
        $tdList.eq(4).text(data.logisticUser); // Submitted By列
    }
});
}

如果可以修改Razor模板,建议把tr的类名从@item.TrIndex改成row-@item.TrIndex,后续选行就可以直接用性能更好的类选择器:var $tblRow = $("#EditTbl tbody tr.row-"+data.trIndex),彻底避免类名语法问题。

优化建议

靠索引匹配td很容易因为后续调整列顺序失效,更稳妥的方式是渲染时给业务td加专属类名,比如:

<!-- Razor渲染部分给对应td加类 -->
<td class="pickup-no-col">
    @Html.DisplayFor(modelItem => item.PickUpNo)
</td>
<td class="carrier-col">
    @Html.DisplayFor(modelItem => item.Carrier)
</td>
<td class="submit-user-col">
    @Html.DisplayFor(modelItem => item.LogisticUser)
</td>

更新的时候直接按类查找,不用数索引:

$tblRow.find(".pickup-no-col").text(data.pickUpNo);
$tblRow.find(".carrier-col").text(data.carrier);
$tblRow.find(".submit-user-col").text(data.logisticUser);

内容的提问来源于stack exchange,提问作者tachidow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:00:55