1. 程式人生 > >JavaScript {} 和[]的區別 post提交數據

JavaScript {} 和[]的區別 post提交數據

arr data sha 初始化 屬性 方式 pre javascrip 字符串

  

今天在寫一個提交到後臺的時候 數據後臺解析不了 出了點小小周折,看了下之前寫的代碼 發現是有個東西疏忽了,為了避免以後不再犯同樣的錯誤,特記錄如下:

{}和[]兩個看起了差不多 有時候傻傻分不清楚 其實兩者差異還是比較大的

{}在js中是一個對象 例如:

var object={};
//初始化操作
object={
‘id‘:1,
‘name‘:‘我是對象‘
}

//賦值操作
object.id=1;
object.name=‘我是對象‘;

//還可以給對象一個函數
object.add=function(){
alert(‘添加成功‘)
}

而[]在js中是一個數組 例如

var array=[];

//賦值
array.id=1;
array.name=‘我是數組‘;

這是定義上的區別,

在實際上會有什麽影響呢?

這裏僅介紹我這次出的問題

我頁面是這樣的 頁面有參數 a b c

如果是普通參數的話 用表單提交 或者普通post提交都可以

但是 b 是一個數組

c則是一個數組 c[0]又是一個數組

這樣我就打算構建一個對象 直接提交到後臺 省得在後臺在解析字符串 還原

於是我構建了這樣一個對象

var request=[];

request.a=‘標題‘;

var b=[]; 
b.push({‘ele‘:‘元素1‘});
b.push({‘ele‘:‘元素2‘});
request.b=b;

var c=[]; 
var d=[];
d.push({‘ele‘:‘元素3‘});
c.push({‘array‘:d});
request.c=c;

然後用$.ajax 提交到後臺

$.ajax({
        type: "POST",
        url: "test",
        data: JSON.stringify(request),
        async: true,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) { //成功執行函數          
            console.log(result);
        },
        error: function (result) { //錯誤時執行的函數
            alert("網絡錯誤,請稍後再試");
        }
    });

後臺時間上只是把接收到的對象再返回來,這時候 返回來的參數都是空值

仔細看了一下 開始以為是ajax參數出問題了 後來回顧了一下以前寫的代碼 發現是{} []的問題

於是改為如下

var request={};

request.a=‘標題‘;

var b=[]; 
b.push({‘ele‘:‘元素1‘});
b.push({‘ele‘:‘元素2‘});
request.b=b;

var c=[]; 
var d=[];
d.push({‘ele‘:‘元素3‘});
c.push(d);
request.c=c;

  

 再次提交 a b 取到值 但是c仍然是空

再次修改

var request={};

request.a=‘標題‘;

var b=[]; 
b.push({‘ele‘:‘元素1‘});
b.push({‘ele‘:‘元素2‘});
request.b=b;

var c=[]; 
var d={};
d.ele=‘‘元素3‘;
c.push(d);
request.c=c;

  這時 a b c 都取到值

結論 用jquery post提交參數時 後臺使用對象接受時 只能提交一個對象{} 對象裏面的某個屬性可以是數組 但是數組必須是一個對象數組 不能是一個二維數組 即使實際上可以作為一個二維數組 也要把裏面那個數組作為對象的屬性賦值;

另外

JSON.stringify(data) 提交時 不可缺少 否則瀏覽器會自動以表單參數拼接方式提交 會丟失參數
提交時 檢查JSON.stringify(data)這個參數是否正確展示了數據

JavaScript {} 和[]的區別 post提交數據