1. 程式人生 > >關於ajax傳遞二維陣列的一些測試和驗證

關於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物件的屬性