关于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传输数组数据后台
这是后台代码打印出来的结果,是一样的~
这次真的结束了喔!!

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