Javascript 使用java脚本拆分html表值
我在rails应用程序中工作,从UI中,我需要在一个表中选择大约500个参数(逗号分隔)来执行。我在AJAX调用中发送这些选定的数据。我无法发布巨大的字符串值,因此如果所选参数计数超过长度200,我计划获取所选参数的长度。我需要分两到三批,然后发送执行。如何实现这一点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
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