javascript - 如何在 jQuery 中以 block 的形式传递 html 表中的一些数据

标签 javascript jquery ajax

我有像这样的html

<table id="library_info_tbl">
  <thead>
    <th>Call No.</th>
    <th>Book</th>
    <th>Accession No.</th>
    <th>Status</th>
  </thead>
  <tbody>
    <tr><td>12<td><td>ffyuyudf</td><td>61</td><td>Lost</td></tr>    
    <tr><td>12<td><td>ffyuyudf</td><td>62</td>Damaged</tr>  
    <tr><td>12<td><td>ffyuyudf</td><td>63</td>Damaged</tr>  
    <tr><td>13<td><td>abcdef</td><td>72</td>Lost</tr>  
    <tr><td>13<td><td>abcdef</td><td>73</td>Lost</tr>  
     ...
  </tbody>
</table>
         

我正在尝试调整以下几行

         $('#library_info_tbl tbody tr').each(function() {

                var statusarray = []; 
                var callno = $(this).find("td:first-child").html();
                var accessionno = $(this).find("td:nth-child(2)").html();
                var status = $(this).find("td:last-child").html();
                var callnotouse = "";
                 
                if(callno is similar) 
                {
                    var innerarray = {};
                        innerarray = {
                            status: status,
                            accessionno: accessionno
                       };      
                       statusarray.push(innerarray);
                       callnotouse = callno;
                }

                if(statusarray.length)
                {
                    $.ajax({
                        url: 'index.php?action=savestatus',
                        type: 'POST',
                        dataType: 'JSON',
                        data: {callno:callnotouse,statusarray:statusarray},
                      ...
                }
              continue; 
          });

用于实现statusarray和callnotouse以便在ajax调用中传递它们。基本上我希望代码应该像首先一样工作,它应该检查表中类似的调用号码,例如上表中的调用号码。

它应该首先根据 callno 12 进行获取,并且内部数组或状态数组应该包含类似的数据

              status: Lost,
              accessionno: 61
                      
              status: Damaged,
              accessionno: 62
              
               status: Damaged,
               accessionno: 63

              callnotouse = 12

这些数据应该传递给ajax调用(将保存在数据库中)。之后,在表的相同循环中,应该采用 callno 13

          status: Lost,
          accessionno: 72

          status: Lost,
          accessionno: 73

          callnotouse = 13

然后它应该被传递给 ajax 调用等等。基本上我无法在类似的callno的基础上调整上面的代码。

最佳答案

工作代码

var libraryInfos = [];

$("#library_info_tbl tbody tr").each(function(){
  var tds = $("td", this);
  var callNo = tds.first().html();

  if(typeof libraryInfos[callNo] == 'undefined'){
    libraryInfos[callNo] = [];
  }

  libraryInfos[callNo].push({
    status: $(tds[4]).html(),
    accessionNo: parseInt($(tds[3]).html())
  });
});

$.each(libraryInfos, function(callNo, statusArr){
  if(statusArr){
    var reqData = { callno: callNo, statusarray: statusArr };

    $.ajax({
      url: 'index.php?action=savestatus',
      type: 'POST',
      dataType: 'JSON',
      data: reqData
    });

    console.log(reqData);
  }
});

演示:https://jsbin.com/mamezit/5/edit?html,js,console,output

关于javascript - 如何在 jQuery 中以 block 的形式传递 html 表中的一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47655110/

相关文章:

javascript - 访问加载后生成的元素?

javascript - Mechanize 卡在 Javascript 重定向页面上

javascript - 为什么当 props 改变时我的页面没有重新渲染? React新手用头撞墙两天了

ajax - jquery表单提交

javascript - 单击其他按钮时如何使div自动隐藏

jquery - 来自多个表单字段的 json2,在 jQuery 中得到错误的值

php - 用于创建下载文件的 Jquery AJAX 调用似乎运行了两次 - 很难理解为什么 :o(

javascript - TypeError : b. toLowerCase 不是 bootstrap typeahead 插件中的函数

javascript - “产品”已定义但从未在 react 中使用?

javascript - Wicket 口和 AJAX : Upload file to server and show it on page