Javascript 带有数字键的对象将以任何方式发送所有以前的数字
事实上,我很难为这个问题定义一个清晰的标题Javascript 带有数字键的对象将以任何方式发送所有以前的数字,javascript,php,ajax,arrays,object,Javascript,Php,Ajax,Arrays,Object,事实上,我很难为这个问题定义一个清晰的标题 我有一个数组,其中一个对象的值由一个数字键定义(本例中为22895)。现在,如果我通过Ajax发送这个数组,PHP将检索一个包含22895个键的数组,其中前22894个键为空 我在定义JS数组/对象时是否做错了什么,或者这种情况的修复方法是什么 我的控制台输出(浏览器)如下所示: 而PHP调试将显示以下内容: 我想这很明显:我需要数组只包含一个发送的值(保留键分配) 编辑: 这就是我如何使用Ajax的方法: $.ajax({ url: ba
我有一个数组,其中一个对象的值由一个数字键定义(本例中为22895)。现在,如果我通过Ajax发送这个数组,PHP将检索一个包含22895个键的数组,其中前22894个键为空 我在定义JS数组/对象时是否做错了什么,或者这种情况的修复方法是什么 我的控制台输出(浏览器)如下所示: 而PHP调试将显示以下内容: 我想这很明显:我需要数组只包含一个发送的值(保留键分配) 编辑: 这就是我如何使用Ajax的方法:
$.ajax({
url: baseurl + '/module/functionName',
context: this,
type: "POST",
dataType: "json",
data: {
splitTicket: {
tasks: Review.splitTicket.data.tasks
}
}
(...)
这就是
$.param
的工作原理。如果它看到一个数组,它会假定它是一个“普通”密集数组:
data=[]; data[10]=99;
$.param({t:data})
返回
"t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=undefined&t%5B%5D=99"
将数组转换为对象以避免此问题:
$.param({t:$.extend({}, data)})
结果:
"t%5B10%5D=99"
递归地做这件事
var ary2obj = function(obj) {
if($.isArray(obj))
return ary2obj($.extend({}, obj));
if($.isPlainObject(obj)) {
var res = {};
$.each(obj, function(k, v) {
res[k] = ary2obj(v);
});
return res;
}
return obj;
}
“我通过Ajax发送此数组”-请向我们展示如何准确地发送此数组。以及如何避免此情况?是否有方法应用此递归?