Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 使用java脚本拆分html表值_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

Javascript 使用java脚本拆分html表值

Javascript 使用java脚本拆分html表值,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我在rails应用程序中工作,从UI中,我需要在一个表中选择大约500个参数(逗号分隔)来执行。我在AJAX调用中发送这些选定的数据。我无法发布巨大的字符串值,因此如果所选参数计数超过长度200,我计划获取所选参数的长度。我需要分两到三批,然后发送执行。如何实现这一点 if (Device1) { parameter_name = $('#parameters_object').val(); var getParams=parameter_name.split(','); param

我在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");
        }
      }
    });

  })();

}
if(设备1){
参数_name=$('#参数_对象').val();
var getParams=参数_name.split(',');
paramLen=getParams.length;
警报(参数);
如果(参数>200){
}
//m是选定的mac地址长度计数
对于(变量i=0;i
您可以将数组拆分为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");
                        }
                    }
                });
            }

        }

}
if(设备1){
参数_name=$('#参数_对象').val();
var getParams=参数_name.split(',');
paramLen=getParams.length;
警报(参数)
var paramsBatches=[];
var-batchSize=200;
对于(i=0,j=getParams.length;i{
var macAdd=数值[i];
$.ajax({
方法:“张贴”,
url:“获取对象”,
数据类型:“json”,
数据:{
参数:批次,
麦克:马卡德,
协议:协议,
serialnumber:serialnumber,
},
成功:功能(结果){
控制台日志(结果);
}
},
状态代码:{
404:函数(){
console.log(“调用失败”);
}
}
});
}
}
}

为什么这个循环“for(var i=0;i