Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 优化jquery代码,通过$.post发送多个数组和简单变量_Javascript_Jquery - Fatal编程技术网

Javascript 优化jquery代码,通过$.post发送多个数组和简单变量

Javascript 优化jquery代码,通过$.post发送多个数组和简单变量,javascript,jquery,Javascript,Jquery,我在服务器端生成这个js,这样阵列就可以有更多的元素 var o = 'hi world'; var keys = ['foo','bar']; var values = ['foox', 'barzs']; 如何优化此部分?: var data = [{name:'prop', value: o}]; data.push({name: 'keys', value: 'foo'}); data.push({name: 'keys', value: 'bar'}); data.push({na

我在服务器端生成这个js,这样阵列就可以有更多的元素

var o = 'hi world';
var keys = ['foo','bar'];
var values = ['foox', 'barzs'];

如何优化此部分?:

var data = [{name:'prop', value: o}];
data.push({name: 'keys', value: 'foo'});
data.push({name: 'keys', value: 'bar'});
data.push({name: 'values', value: 'foox'});
data.push({name: 'values', value: 'barzs'});

$.post('url', $.param(data), ...);

我不知道在一个有限的例子中,你是否真的在优化任何东西,但是如果你真的有大数据集,你可以通过一个循环推送值

同样,这取决于您所说的优化是什么意思,但我假设您处理的数据集比您的示例大得多,这意味着必须为每个值编写push语句

var data = [{name:'prop', value: o}];

for ( i in keys ) {
    data.push({ name: 'keys', value: keys[i] });
}

for ( i in values ) {
    data.push({ name: 'values', value: values[i] });
}

我认为这相当于:

$.post('url', {
  'prop': o,
  'keys': ['foo', 'bar'],
  'values': ['foox', 'barzs']
}, function() { ... });

在某种程度上,这取决于服务器的期望。一些服务器环境理解将同一参数的多个实例视为数组值参数的HTTP约定,而另一些服务器环境则更喜欢参数名称具有显式的内在“索引”,如“键[0]”、“键[1]”等。一些服务器环境也理解这一点。

您所说的“优化”是什么意思好吧,谢谢你的澄清!我的是asp.net mvc,这种方式将获得键[0]=“foo,bar”,而不是same@Omu如果是这样的话,那是因为asp.net将在服务器上重新组合单独的参数。对我来说,这是一个糟糕的想法,但是还有很多原因我不使用ASP:-)如果您使用篡改数据或类似的东西,您应该能够看到jQuery拆分数组值参数,以便它们在HTTP请求中真正分开。