我现在已经问过这个问题,但是我想从今天早上开始尝试解决这个问题,我无法做到这一点。
我有一个名为items
的全局变量我有一个.ajax请求,我需要发送items数组的内容
项目就像这样
items = new Array();
for (var i = 0; i < 10; i++)
{
//just populating the list
var item = [];
item['some_stuff'] = 'string';
item['some_int'] = 373;
items.push(item);
}
//这是请求
if (items.length > 0)
{
$.ajax({
type : "POST",
url : "/grad1/adaugaComanda.php",
data : { "stuff" : items},
success : function (data){
alert(data);
// window.location = '/dashboard.php?categ=5&sel=1';
}
});
}
//
执行请求但未发送数据。我试图在数组上使用JSON.stringify,但它返回空([[]])。
任何想法我做错了什么?
答案 0 :(得分:3)
//just populating the list
var item;
这声明了一个名为item
的变量,但没有给它一个值,所以它是undefined
item['some_stuff'] = 'string';
这会尝试为some_stuff
的{{1}}属性赋值。这是不允许的,因此JS将抛出异常并且脚本执行将停止。
您根本没有提出请求,因为您的脚本远远不够。
您需要将对象分配给undefined
:
item
您已编辑了问题,因此您的代码现在显示为:
var item = {}
您仍然需要在此处使用简单的对象(var item = [];
而不是{}
)。 []
个对象应该只有 numeric 索引。在序列化时,jQuery将忽略数组上的命名属性。