在公司的項(xiàng)目中用jquery很久,一直沒(méi)錯(cuò),今天突然自己想讓jquery請(qǐng)求servlet,然后讓servlet返回一個(gè)字符串,起初我懷疑不是json格式的數(shù)據(jù),前端的js不接受不是json格式的數(shù)據(jù),后來(lái),自己拼了一個(gè)json格式的字符串,意想不到的事發(fā)生了,前端的js的jquery回調(diào)函數(shù)還是取不到數(shù)據(jù),仔細(xì)研究一番,終于發(fā)現(xiàn)了問(wèn)題的癥結(jié)。
壽光網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。開(kāi)始,我在項(xiàng)目的servlet直接out.print("test"); 結(jié)果前端的js沒(méi)有反應(yīng),我想可能是out.print()里邊的數(shù)據(jù)不是json格式的,接下來(lái)自己拼了個(gè)json格式的數(shù)據(jù),就是下邊這個(gè):
"[{'age':'40','name':'張翠山','sex':'男'}," + "{'age':'109','name':'張三豐','sex':'男'}]"; 我覺(jué)得這個(gè)應(yīng)該是json格式的數(shù)據(jù)了吧,但是,讓我十分納悶的是前端的js的回調(diào)函數(shù)還是沒(méi)有反應(yīng)。
接下來(lái),我找了將數(shù)據(jù)格式化為json格式的工具及其相關(guān)的jar包,數(shù)據(jù)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包是將數(shù)據(jù)json格式化的必須的,缺一不可,否則運(yùn)行時(shí),程序報(bào)classnotfound exception,之后我將上邊json里邊的兩條數(shù)據(jù)封裝成對(duì)象,然后放到一個(gè)泛型list列表里邊,用下邊的語(yǔ)句將List數(shù)據(jù)json化:test=JSONArray.fromObject(slist).toString(); 然后讓程序運(yùn)行,這回前端的JS回調(diào)有了劇烈反應(yīng),終于有反應(yīng)了,但是程序給的json串讓我難以理解: [{"age":"40","name":"張翠山","sex":"男"},{"age":"109","name":"張三豐","sex":"男"}],難道" ' "這個(gè)符號(hào)前端的Js不認(rèn)識(shí)嗎?經(jīng)過(guò)反復(fù)嘗試,我可以下結(jié)論,果然,jquery請(qǐng)求servlet,servlet響應(yīng)的數(shù)據(jù)可以是json或xml,但是json我肯定的是必須是:[{"age":"40","name":"張翠山","sex":"男"},{"age":"109","name":"張三豐","sex":"男"}]這種樣式的。
難道為了用jquery發(fā)起ajax請(qǐng)求,還得必須引用那么多jar包嗎?我看了一下2M多,不小。
其實(shí),不必引入數(shù)據(jù)json專門格式化的,我們可以自己拼json格式的數(shù)據(jù),但是程序又不識(shí)別“ ' ”,怎么辦?有辦法,用轉(zhuǎn)義符"\",這回轉(zhuǎn)義符號(hào)起到了決定性作用,拼好的數(shù)據(jù)如下:"[{\"age\":\"40\",\"name\":\"張翠山\",\"sex\":\"男\(zhòng)"}," + "{\"age\":\"109\",\"name\":\"張三豐\",\"sex\":\"男\(zhòng)"}]"; 雖然數(shù)據(jù)丑了點(diǎn),但是不用引入那么多jar包就可以數(shù)據(jù)格式化為json格式的了。
再回到自己的那個(gè)問(wèn)題,那就可以將test字符串一個(gè)數(shù)據(jù)拼成json格式的再out.print(),就可以完成jquery的ajax的請(qǐng)求了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。