關於ajax傳遞二維陣列的一些測試和驗證
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物件的屬性