emmmm,以前一直以为传输中是不能直接传输整个数组的,但是,以为就是以为啊!还是太年轻了!果然实践是检验真理的唯一标准!
我写了个小demo(根本算不上demo)测试ajax传输数组数据给后台:
前端环境:
emmmm,最简单的html,jQuery,(相当于没有复杂环境)
后台环境:
node后台,我是用express自动生成的环境~
好的,环境有了,开测吧!

第一种情况:
			只传输数组:
				① get方式:

JAVA ajax传参数组 ajax能传数组吗_ajax后台交互传输数组数据


JAVA ajax传参数组 ajax能传数组吗_数据_02


我后台的地址为test,这是直接模拟假数据传输过去啦!

后台没干啥,只是打印了一下接收到的数据而已:

JAVA ajax传参数组 ajax能传数组吗_ajax后台交互传输数组数据_03


打印出来的结果为:

JAVA ajax传参数组 ajax能传数组吗_数组_04


可以看到,普通data方式接收的数组数据到后台仍然是个数组,是原样式的。

原因大概也能猜到,本来发过去的数据就是个json格式数据,接收的肯定也是json格式数据的。

② post方式:

前端很简单,只是把type类型改为post就OK,

后台代码因为post接收方式不同,所以更改了打印的数据:

JAVA ajax传参数组 ajax能传数组吗_JAVA ajax传参数组_05


打印结果:

JAVA ajax传参数组 ajax能传数组吗_数据_06


是个很奇怪的结果,起初我还在傻傻的犯初级错误,觉得同名可能会造成影响,所以换了一个名字,结果一样:

JAVA ajax传参数组 ajax能传数组吗_数组_07


所以,额,,不知道怎么解释,我不太清楚具体的传输方式,我所知道的是post方式是分了两步的———首先将文件头发送出去,然后才发送数据。这个,我不知道怎么解释啦!

继续!

第二种情况

除了数组以外还有其他数据

① get方式传输

前端传的数据无非就是多了几项:

JAVA ajax传参数组 ajax能传数组吗_数据_08


JAVA ajax传参数组 ajax能传数组吗_服务器_09


后台代码不变,就不贴图了,直接上结果图:

JAVA ajax传参数组 ajax能传数组吗_数组_10


可以看到,还是不变,都是一样的,原样输出。

② post方式

JAVA ajax传参数组 ajax能传数组吗_ajax后台交互传输数组数据_11


还是一样的,没毛病。

第三种情况:

用formdata形式传输:

formdata用于传输二进制流数据(好像是这样,反正我是这样),而且formdata传输的话,就无法使用get方式传输,必须用post方式

如果要用formdata传输数据的话,必须在请求中加入processData: false以及contentType:false

① 只传输一个数组:

JAVA ajax传参数组 ajax能传数组吗_服务器_12


这边直接传输一个数组形式数据过去后台,后台代码不变,仍然用post接收方式的那个接口(代码必变),运行结果:

JAVA ajax传参数组 ajax能传数组吗_数组_13


可以看到,传输过程中,服务器主动帮我们把数组解析成了一个个用逗号分隔的字符串

JAVA ajax传参数组 ajax能传数组吗_服务器_14


我用typeof打印了一下接收到的数据类型,显示为string,也就是过程中,服务器(我也不知道是谁)直接帮我们把数组数据转化了,以逗号分割。

是不是很想死?

我仿佛记得之前同事跟我说:“前端数据(数组)你们以逗号分割给我吧!”,

然后我们傻傻地把数组做了拆分整合,传给后台,后台又重新组装成数组…

怪我怪我,书读的少… …

之前就在这里就结尾了,忘记了还有一种情况,现在补充上来:

② 传输数组外还有其他数据传输:

JAVA ajax传参数组 ajax能传数组吗_ajax后台交互传输数组数据_15


后台代码差不多啦,只是打印!

JAVA ajax传参数组 ajax能传数组吗_数据_16


这是后台代码打印出来的结果,是一样的~