ajax 传值问题

原文  https://www.cnblogs.com/jpfss/p/9547004.htmlhtml

在jquery的ajax中,若是没加contentType:"application/json",那么data就应该对应的是json对象,反之,若是加了contentType:"application/json",那么ajax发送的就必须是字符串。jquery

下面即是两种犯错的例子:ajax

1>前台ajax多加了contentType:"application/json",data却错传成json对象:json

后台处理:(employee该pojo对象里有username和password等String字段)浏览器

结果都为null服务器

将contentType去掉后,app

后台成功反射出对象:url

 

 

2>ajax中没加contentType:"application/json",data却直接使用了json字符串(和上面的一个道理)code

后台状况:orm

 

 

3>第三点是真的有点恶心的一点,找了很久才找到。。

那就是  有些  关键的属性在Mvc层中反射失败,会致使其余全部属性都为null




好比上面的joindate对应的pojo是Date,原本input框里的值是 Thu Dec 30 00:00:00 CST 1999 ,传到后台用Date接收,可是显然格式不对,因而Date合成出了错,而后坑爹的就来了,由于这个特殊的属性反射失败,Mvc层就将请求打回去而后致使浏览器报错400 bad request ,从而致使其余全部属性都为null。最后把joindate属性注释掉,后台什么属性的值都收到了。。

 

 

补充:咱们都知道,无论前台发送的是json字符串仍是对象,服务器本质上收到的都是字符流,那么为何ajax又能够直接传对象呢?由于不加contentType:"application/json"的时候,发送类型变为默认的application/x-www-form-urlencoded,而这种方式会以键值对的形式将对象序列化,因此传进去的对象实际上仍是变成了字符流

相关文章
相关标签/搜索