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,而這種方式會以鍵值對的形式將對象序列化,因此傳進去的對象實際上仍是變成了字符流

相關文章
相關標籤/搜索