繁体   English   中英

使用Java脚本拆分HTML表值

[英]Split html table values using java script

我正在使用Rails应用程序,并且需要从UI中选择要在表中执行的约500个参数(以逗号分隔)。 我正在AJAX呼叫中发送这些选定的数据。 我无法发布巨大的字符串值,因此,如果所选参数计数超过长度200,我打算获取所选参数的长度。我需要拆分两批或三批并发送执行。 如何实现呢?

if (Device1) {
  parameter_name = $('#parameters_object').val();
  var getParams=parameter_name.split(',');
  paramLen=getParams.length;
  alert(paramLen);
  if (paramLen > 200){

  }

  //m is a selected mac address length count
  for (var i = 0; i < m; i++) {

    (function () {

      var macAdd = values[i];
      $.ajax({
          method: "POST",
          url: "get_object",
          dataType: "json",
          data: {
            parameter: getParams,
            mac: macAdd,
            protocol: protocol,
            serialnumber: serialnumber,
          },

          success: function (result) {
            console.log(result);

          }
        },

        statusCode: {
        404: function () {
          console.log("Call failed");
        }
      }
    });

  })();

}

您可以将数组拆分为200个项目的块,然后遍历该块数组并进行AJAX调用。

const chunkSize = 200
const chunkParams = getParams.reduce((resultArray, item, index) => { 
    const chunkIndex = Math.floor(index/chunkSize)

    if(!resultArray[chunkIndex]) {
        resultArray[chunkIndex] = [] // start a new chunk
    }

    resultArray[chunkIndex].push(item)

    return resultArray
}, [])

values.forEach(macAddress => 
    chunkParams.forEach(chunkParam => 
        $.ajax({
           method: "POST",
           url: "get_object",
           dataType: "json",
           data: {
              parameter: chunkParam,
              mac: macAddress,
              ....
           },
           ...
       });
    )
)

您可以在reduce循环中直接进行AJAX调用,性能更高,但可读性更差。

您需要将参数拆分为批次,并为每个批次进行ajax调用。 请尝试以下操作:

if (Device1) {
       parameter_name = $('#parameters_object').val();
       var getParams=parameter_name.split(',');
       paramLen=getParams.length;
        alert(paramLen)
        var paramsBatches = [];
        var batchSize = 200;
        for (i = 0, j = getParams.length; i < j; i += batchSize) {
            paramsBatches.push(getParams.slice(i, i + batchSize));
        }

        //m is a selected mac address length count
        for (var i = 0; i < m; i++) {
            paramsBatches.forEach((batch, index) => {
                var macAdd = values[i];
                $.ajax({
                    method: "POST",
                    url: "get_object",
                    dataType: "json",
                    data: {
                        parameter: batch,
                        mac: macAdd,
                        protocol: protocol,
                        serialnumber: serialnumber,
                    },

                    success: function (result) {
                        console.log(result);

                        }
                    },

                    statusCode: {
                        404: function () {
                            console.log("Call failed");
                        }
                    }
                });
            }

        }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM