您好,登錄后才能下訂單哦!
在公司的項目中用jquery很久,一直沒錯,今天突然自己想讓jquery請求servlet,然后讓servlet返回一個字符串,起初我懷疑不是json格式的數據,前端的js不接受不是json格式的數據,后來,自己拼了一個json格式的字符串,意想不到的事發生了,前端的js的jquery回調函數還是取不到數據,仔細研究一番,終于發現了問題的癥結。
開始,我在項目的servlet直接out.print("test"); 結果前端的js沒有反應,我想可能是out.print()里邊的數據不是json格式的,接下來自己拼了個json格式的數據,就是下邊這個:
"[{'age':'40','name':'張翠山','sex':'男'}," + "{'age':'109','name':'張三豐','sex':'男'}]"; 我覺得這個應該是json格式的數據了吧,但是,讓我十分納悶的是前端的js的回調函數還是沒有反應。
接下來,我找了將數據格式化為json格式的工具及其相關的jar包,數據json格式化所需的jar包如下:
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar
json-lib-2.3-jdk15.jar
以上jar包是將數據json格式化的必須的,缺一不可,否則運行時,程序報classnotfound exception,之后我將上邊json里邊的兩條數據封裝成對象,然后放到一個泛型list列表里邊,用下邊的語句將List數據json化:test=JSONArray.fromObject(slist).toString(); 然后讓程序運行,這回前端的JS回調有了劇烈反應,終于有反應了,但是程序給的json串讓我難以理解: [{"age":"40","name":"張翠山","sex":"男"},{"age":"109","name":"張三豐","sex":"男"}],難道" ' "這個符號前端的Js不認識嗎?經過反復嘗試,我可以下結論,果然,jquery請求servlet,servlet響應的數據可以是json或xml,但是json我肯定的是必須是:[{"age":"40","name":"張翠山","sex":"男"},{"age":"109","name":"張三豐","sex":"男"}]這種樣式的。
難道為了用jquery發起ajax請求,還得必須引用那么多jar包嗎?我看了一下2M多,不小。
其實,不必引入數據json專門格式化的,我們可以自己拼json格式的數據,但是程序又不識別“ ' ”,怎么辦?有辦法,用轉義符"\",這回轉義符號起到了決定性作用,拼好的數據如下:"[{\"age\":\"40\",\"name\":\"張翠山\",\"sex\":\"男\"}," + "{\"age\":\"109\",\"name\":\"張三豐\",\"sex\":\"男\"}]"; 雖然數據丑了點,但是不用引入那么多jar包就可以數據格式化為json格式的了。
再回到自己的那個問題,那就可以將test字符串一個數據拼成json格式的再out.print(),就可以完成jquery的ajax的請求了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。