關於ajax數組數據類型傳輸

emmmm,以前一直以爲傳輸中是不能直接傳輸整個數組的,但是,以爲就是以爲啊!還是太年輕了!果然實踐是檢驗真理的唯一標準!
我寫了個小demo(根本算不上demo)測試ajax傳輸數組數據給後臺:
前端環境:
emmmm,最簡單的html,jQuery,(相當於沒有複雜環境)
後臺環境:
node後臺,我是用express自動生成的環境~
好的,環境有了,開測吧!

	第一種情況:
			只傳輸數組:
				① get方式:

ajax傳輸數組數據
ajax傳輸數組數據
我後臺的地址爲test,這是直接模擬假數據傳輸過去啦!
後臺沒幹啥,只是打印了一下接收到的數據而已:
後臺接收數組數據
打印出來的結果爲:
get方式接收到的數組數據格式
可以看到,普通data方式接收的數組數據到後臺仍然是個數組,是原樣式的。
原因大概也能猜到,本來發過去的數據就是個json格式數據,接收的肯定也是json格式數據的。

		② post方式:

前端很簡單,只是把type類型改爲post就OK,
後臺代碼因爲post接收方式不同,所以更改了打印的數據:
後臺接收數組數據
打印結果:
post方式接收到的數組數據格式
是個很奇怪的結果,起初我還在傻傻的犯初級錯誤,覺得同名可能會造成影響,所以換了一個名字,結果一樣:
post方式接收到的數組數據格式
所以,額,,不知道怎麼解釋,我不太清楚具體的傳輸方式,我所知道的是post方式是分了兩步的———首先將文件頭髮送出去,然後才發送數據。這個,我不知道怎麼解釋啦!
繼續!
第二種情況
除了數組以外還有其他數據
① get方式傳輸
前端傳的數據無非就是多了幾項:
ajax傳輸數組數據
ajax傳輸數組數據
後臺代碼不變,就不貼圖了,直接上結果圖:
get方式接收到的數組數據格式
可以看到,還是不變,都是一樣的,原樣輸出。
② post方式
post方式接收到的數組數據格式
還是一樣的,沒毛病。
第三種情況:
用formdata形式傳輸:
formdata用於傳輸二進制流數據(好像是這樣,反正我是這樣),而且formdata傳輸的話,就無法使用get方式傳輸,必須用post方式
如果要用formdata傳輸數據的話,必須在請求中加入processData: false以及contentType:false
① 只傳輸一個數組:
formdata傳輸數組
這邊直接傳輸一個數組形式數據過去後臺,後臺代碼不變,仍然用post接收方式的那個接口(代碼必變),運行結果:
formData傳輸數組數據結果
可以看到,傳輸過程中,服務器主動幫我們把數組解析成了一個個用逗號分隔的字符串
formData傳輸數組數據結果string字符串
我用typeof打印了一下接收到的數據類型,顯示爲string,也就是過程中,服務器(我也不知道是誰)直接幫我們把數組數據轉化了,以逗號分割。
是不是很想死?
我彷彿記得之前同事跟我說:“前端數據(數組)你們以逗號分割給我吧!”,
然後我們傻傻地把數組做了拆分整合,傳給後臺,後臺又重新組裝成數組…
怪我怪我,書讀的少… …
————————————————————————————————————————————
之前就在這裏就結尾了,忘記了還有一種情況,現在補充上來:
② 傳輸數組外還有其他數據傳輸:
ajax傳輸數組
後臺代碼差不多啦,只是打印!
ajax傳輸數組數據後臺
這是後臺代碼打印出來的結果,是一樣的~
這次真的結束了喔!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章