Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用jquery获取html()属性时,无法获取更新的表值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 当使用jquery获取html()属性时,无法获取更新的表值

Javascript 当使用jquery获取html()属性时,无法获取更新的表值,javascript,jquery,html,Javascript,Jquery,Html,我有一个从数据库加载的表。当用户更新表中的文本框时,我编写了一个jquery,它应该从HTML表中收集更新的值,并希望将它们更新回数据库。需要帮助修复jquery以从表单获取更新的值。当我填写表单并尝试运行Jquery时,下面编写的Jquery不会给我更新的html值 HTML <div class="panel-body"> <table id="myTable"

我有一个从数据库加载的表。当用户更新表中的文本框时,我编写了一个jquery,它应该从HTML表中收集更新的值,并希望将它们更新回数据库。需要帮助修复jquery以从表单获取更新的值。当我填写表单并尝试运行Jquery时,下面编写的Jquery不会给我更新的html值

HTML

                            <div class="panel-body">
                            <table id="myTable" class="table table-striped table-hover table-sm" cellspacing="10" width="100%" style="font-size: 14px; height: auto">
                                <thead>
                                    <tr style="text-align: right;">
                                        <th>Key Type</th>
                                        <th>Key</th>
                                        <th>Value</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    {% for result in results %}
                                    <tr>
                                        <td>{{result["Key Type"]}}</td>
                                        <td>{{result["Key"]}}</td>
                                        <td><input type="text" value={{result["Value"]}} style="text-align: center;"></td>
                                    </tr>
                                    {% endfor %}
                                </tbody>
                            </table>
                            <div class="col-md-4">
                                <input type="submit" id="Save" align="center" class="btn btn-primary" style="width:150px" value="SAVE">
                                <input type="reset" id="Reset" align="center" class="btn btn-primary" style="width:150px" value="CANCEL">
                            </div>
                        </div>

键类型
钥匙
价值
{结果中的结果为%}
{{result[“Key Type”]}
{{result[“Key”]}
{%endfor%}
Jquery

    <script type="text/javascript">
    $(function () {
        var dataArr = [];
        $("td").each(function () {
            dataArr.push($(this).html());
        });
        $('#Save').click(function () {
            $.ajax({
                type: "POST",
                headers: { "Content-Type": "application/json" },
                url: "/SaveFile",
                data: JSON.stringify(dataArr),
                success: function (response) {
                    console.log(response);
                },
                error: function (response, error) {
                    console.log(response);
                    console.log(error);
                }
            });
        });
    });
</script>

$(函数(){
var dataArr=[];
$(“td”)。每个(功能){
dataArr.push($(this.html());
});
$(“#保存”)。单击(函数(){
$.ajax({
类型:“POST”,
标题:{“内容类型”:“应用程序/json”},
url:“/SaveFile”,
数据:JSON.stringify(dataArr),
成功:功能(响应){
控制台日志(响应);
},
错误:函数(响应,错误){
控制台日志(响应);
console.log(错误);
}
});
});
});
所做的更改

    <script type="text/javascript">
    $(function () {
        $('#Save').click(function () {
            var dataArr = [];
            $("td").each(function () {
                dataArr.push($(this).html());
            });
            $.ajax({
                type: "POST",
                headers: { "Content-Type": "application/json" },
                url: "/SaveFile",
                data: JSON.stringify(dataArr),
                success: function (response) {
                    console.log(response);
                },
                error: function (response, error) {
                    console.log(response);
                    console.log(error);
                }
            });
        });
    });
</script>

$(函数(){
$(“#保存”)。单击(函数(){
var dataArr=[];
$(“td”)。每个(功能){
dataArr.push($(this.html());
});
$.ajax({
类型:“POST”,
标题:{“内容类型”:“应用程序/json”},
url:“/SaveFile”,
数据:JSON.stringify(dataArr),
成功:功能(响应){
控制台日志(响应);
},
错误:函数(响应,错误){
控制台日志(响应);
console.log(错误);
}
});
});
});

<代码> > p>我会考虑一个对象数组和一个数组。如果您的表格采用此格式:

<div class="panel-body">
  <table id="myTable" class="table table-striped table-hover table-sm" cellspacing="10" width="100%" style="font-size: 14px; height: auto">
    <thead>
      <tr style="text-align: right;">
        <th>Key Type</th>
        <th>Key</th>
        <th>Value</th>
      </tr>
    </thead>
    <tbody>
      {% for result in results %}
      <tr>
        <td>{{result["Key Type"]}}</td>
        <td>{{result["Key"]}}</td>
        <td><input type="text" value={{result["Value"]}} style="text-align: center;"></td>
      </tr>
      {% endfor %}
    </tbody>
  </table>
  <div class="col-md-4">
    <input type="submit" id="Save" align="center" class="btn btn-primary" style="width:150px" value="SAVE">
    <input type="reset" id="Reset" align="center" class="btn btn-primary" style="width:150px" value="CANCEL">
  </div>
</div>
dataObj
数组将包含如下内容:

[
  {
    "Key Type": "Number",
    "Key": "Product Code",
    "Key Value": "1001"
  },
  {
    "Key Type": "Number",
    "Key": "Product Code",
    "Key Value": "1002"
  }
]
另外请注意,对于某些单元格,我们从该单元格和最后一个单元格中获取文本,我们必须从输入字段中获取值。如果这是您试图获取数组的唯一项,那么您可以简化代码

function getTableData(tbl){
  var body = $("tbody", tbl);
  var results = [];
  $("tr", body).each(function(i, r){
    results.push($("td:last input", r).val());
  });
  return results;
}
这将为您提供一个包含所有输入的数组。它的使用方式如下:

var dataArr = getTableData($("#myTable"));

您提供的代码似乎不会更新您的表,也不会获取更新的信息。我不清楚你的问题是什么。看起来,您标记为HTML的内容实际上不是HTML,而是通过其他程序处理为HTML。请向我们提供准确的信息,以便能够重现您的问题。如果您所说的是,您希望在单击
“#Save”
时,
dataArr
数组是每个
的当前内容,那么显然,它不会是。它将是创建
dataArr
时的内容,因为您显示的代码中从未更新过
dataArr
。如果您希望在单击
'#Save'
时将其作为
内容,则需要在此时读取数据。这可以通过移动
$('#Save')来实现。单击
$(function(){
行之后的(function(){
行)以立即执行。仍然存在相同的问题。让我编辑所做的代码更改
function getTableData(tbl){
  var body = $("tbody", tbl);
  var results = [];
  $("tr", body).each(function(i, r){
    results.push($("td:last input", r).val());
  });
  return results;
}
var dataArr = getTableData($("#myTable"));