使用Jquery获取HTML表数据

时间:2016-01-19 13:10:17

标签: javascript php jquery json html-table

我是Jquery的新手。首先,我想说我已经研究了近一天这个查询。尝试过多种方法,但没有一种方法可行。我正在尝试使用HTML,PHP和Jquery对计费模块进行编码。到目前为止,我已经成功创建了HTML表。我希望将这些表中的数据检索到PHP页面,以便我可以使用正确的格式打印它们。

HTML表格如下。

<table id="items">
    <tbody>

      <tr>
          <th>SlNo</th>
          <th>Item</th>
          <th>Unit Cost</th>
          <th>Quantity</th>
          <th>Price</th>
      </tr>

 <tr class="item-row">
         <td class="item-name">
           <div class="delete-wpr">
          <input type="text" class="slno"/>
           <a class="delete" href="javascript:;" title="Remove row">X</a>
           </div>
         </td>

           <td><input type="text" class="slno"/></td>           

           <td><input type="text" class="cost"/></td>
           <td><input type="text" class="qty"/></td>
           <td><span class="price"></span></td>
      </tr>  



    <input type="button" value="submit" onClick="storeAndShowTableValues()"/>


    <tbody>

现在,Jquery如下。

     var TableData = new Array();
     $('#items tr').each(function(row, tr){

     TableData[row]={
        "ItemNum" : $(tr).find('td:eq(0)').text(), 
        "Itemname" :$(tr).find('td:eq(1)').text(),
         "unitprice" : $(tr).find('td:eq(2)').text(),
         "Qty" : $(tr).find('td:eq(3)').text(),
        "price" : $(tr).find('td:eq(4)').text()
    }
}
); 
TableData.shift();  // first row is the table header - so remove

var TableData = JSON.stringify(TableData);

但我得到的JSON对象是垃圾。不检索表数据。请帮忙。

3 个答案:

答案 0 :(得分:4)

要获取jQuery中输入字段的值,您需要使用.val()函数。

还要确保选择td标签中的输入元素

http://api.jquery.com/val/

所以你的代码应该是这样的:

var TableData = new Array();

    $('#items tr').each(function(row, tr){

    TableData[row]={
        "ItemNum" : $(tr).find('td:eq(0) input').val(),
        "Itemname" :$(tr).find('td:eq(1) input').val(),
         "unitprice" : $(tr).find('td:eq(2) input').val(),
         "Qty" : $(tr).find('td:eq(3) input').val(),
        "price" : $(tr).find('td:eq(4)').text()
    }
}
);
TableData.shift();  // first row is the table header - so remove

TableData = JSON.stringify(TableData);

答案 1 :(得分:1)

var TableData = new Array();

$('#items tr').each(function(row){

TableData[row]={
     "ItemNum" : $(this).find('td:eq(0) input').val(), 
    "Itemname" :$(this).find('td:eq(1) input').val(),
     "unitprice" : $(this).find('td:eq(2) input').val(),
     "Qty" : $(this).find('td:eq(3) input').val(),
    "price" : $(this).find('td:eq(4) input').val(),
  }
  }
); 
 TableData.shift();  // first row is the table header - so remove

  var TableData = JSON.stringify(TableData);

答案 2 :(得分:-2)

不要占用你的大部分时间,但我认为你需要得到val()而不是text()或html()