var data = [];
$('.choose_Tab tbody .active').each(function(i){
var tmp = {};
tmp['proid'] = $(this).attr('data-id');
tmp['num'] = $(this).attr('data-id');
data.push(tmp);
})
$.ajax({
url: "/index.php/index/products/addshopping",
type: 'post',
data: {'data':data},
// traditional: true,//防止深度序列化
success: function (re) {
if (re.code === 1) {
setTimeout(function () {
location.href = info.url;
}, 1000);
}
$(".mbmbmbmb .contactsss span").text("已加入购物车!");
$(".mbmbmbmb").fadeIn();
}
})
以上是ajax正常发送数据制作;
其他方法:
1 traditional :true 将ajax的参数traditional设置为true,那么可以将数组转为一个格式字符串,不过这个还需要到后台进行字符串解析。这个方法测试了 必须要把data = JSON.stringify(data) 依然是需要转为json ,而且还是需要设置 var tmp = {},并没简化过程;
2 将js object(或array)转为json :JSON.stringify(data) 在var tmp =[]本质为数组的情况下,发送时有数据,后台接受依然为null,
所以设置 var tmp = {}是唯一的办法
查阅资料可知:
数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。
当然,数组和对象的另一个区别是,数组的数据没有”名称”(name),对象的数据有”名称”(name)。
但是问题是,很多编程语言中,都有一种叫做”关联数组”(associative array)的东西。这种数组中的数据是有名称的。
• 但是在《javascript DOM》中,不推荐我们使用 关联数组;因为在本质上你创建的关联数组的性质就是Array对象的属性