如何使用 jQuery Datatables 将所有网格值一次性提交到服务器?

发布于 2024-10-19 18:28:11 字数 544 浏览 1 评论 0原文

我希望将网格中的所有数据保存到服务器。我正在使用 jquery 数据表插件。

function fnSave() {
    var aTrs = oTable.fnGetNodes();
    var aReturn = new Array();

    for(var i=0;i<aTrs.length;i++) {
        var aData=oTable.fnGetData(i);
        aReturn.push( aData );
    }

    console.log(aReturn);
}

作为回报,我得到:

"<input name="regimentNameAgents" value="" id="regimentNameAgents" type="text">"
...

我只想返回网格值(而不是 HTML)。

通过使用这个函数,我的值始终是:value="",即使我在输入中添加文本,为什么?

有没有更好的方法来提取所有网格数据?

I looking to save all data from my grid to a server. I'm using jquery Datatables plugin.

function fnSave() {
    var aTrs = oTable.fnGetNodes();
    var aReturn = new Array();

    for(var i=0;i<aTrs.length;i++) {
        var aData=oTable.fnGetData(i);
        aReturn.push( aData );
    }

    console.log(aReturn);
}

As return I get :

"<input name="regimentNameAgents" value="" id="regimentNameAgents" type="text">"
...

I would like to only return grid values (and not HTML).

By using this function, my value is always: value="", even if I add text in the input, why?

Is there a better way to extract all grid data ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぇ气 2024-10-26 18:28:11

存储在 JDataTable 中的数据不是 DOM 中当前的数据,而是您最初设置它的数据。因此,当您更新输入时,DOM 元素也会更新,但没有挂钩来更新 jdatatable 中保存的数据。我会构建更像这样的网格:

var grid = new Array();
$("table tr").each(function() {
    var nextRow = new Array();
    grid.push(nextRow);
    $("td", this).each(function() {
        var nextValue = $("input", this).val();
        nextRow.push(nextValue);
    });
});

然后 grid 变量应该存储完整的数据表。我对你如何在那里构建你的表格做了一些假设,因为它没有发布,但我猜这与你所得到的相当接近。

The data that's stored in the JDataTable isn't what's currently in the DOM, it's what you set it with originally. So when you update an input, the DOM element is updated, but there's no hook to update the data held in the jdatatable. I'd build the grid something more like this:

var grid = new Array();
$("table tr").each(function() {
    var nextRow = new Array();
    grid.push(nextRow);
    $("td", this).each(function() {
        var nextValue = $("input", this).val();
        nextRow.push(nextValue);
    });
});

The grid variable should then be storing your full table of data. I'm making a few assumptions about how you've structured your table there, since it wasn't posted, but I'm guessing that's fairly close to what you've got.

杯别 2024-10-26 18:28:11

通过使用数据表 fnGetNodes,解决方案如下:

function fnSave() {

                   var aTrs = oTable.fnGetNodes();
                   var aReturn = new Array();

                   $(aTrs).each(function() {
                      var nextRow = new Array();
                      aReturn.push( nextRow );

                      $("td", this).each(function() {
                      var nextValue = $("input", this).val();
                      nextRow.push(nextValue);
                      });
                    });                  

                 console.log(aReturn);
}

By using Datatables fnGetNodes, here is the solution :

function fnSave() {

                   var aTrs = oTable.fnGetNodes();
                   var aReturn = new Array();

                   $(aTrs).each(function() {
                      var nextRow = new Array();
                      aReturn.push( nextRow );

                      $("td", this).each(function() {
                      var nextValue = $("input", this).val();
                      nextRow.push(nextValue);
                      });
                    });                  

                 console.log(aReturn);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文