1. ajax模版
application/x-www-form-urlencoded:
application/json:
通過(guò)上面例子發(fā)現(xiàn),結(jié)構(gòu)簡(jiǎn)單的時(shí)候formdata數(shù)據(jù)更簡(jiǎn)單,結(jié)構(gòu)復(fù)雜的時(shí)候(array)JSON數(shù)據(jù)更簡(jiǎn)單。
題目問(wèn)到Java接口,應(yīng)該分三種情況。
如果是JSP等服務(wù)器端模板技術(shù),再加上一些jQuery AJAX。POST的時(shí)候,默認(rèn)contentType都是application/x-www-form-urlencoded??筛某蒩pplication/json,看自己。
如果用前端框架,Angular、React、Vue。POST的時(shí)候,默認(rèn)contentType都是application/json。建議用JSON,別改。JSON就是JS的一個(gè)子集,既方便JS解析,也方便人讀。
Java服務(wù)器端對(duì)其他服務(wù)器端通信。其實(shí)更建議用XML,特別是和第三方服務(wù)通信的時(shí)候。如果公司內(nèi)部自己的幾個(gè)Java服務(wù)通信,用JSON就好。
現(xiàn)在Java Web開(kāi)發(fā),最常見(jiàn)的是上面第2種情況。所以,當(dāng)用Spring MVC的時(shí)候,建議用@RestController
如果用@Controller,需要這么寫:
如果用@RestController,不需要寫@ResponseBody,也不需要指定consumes和produces類型,默認(rèn)都是application/json。可以簡(jiǎn)化成這樣:
2. ajax模板
顧名思義,這是一個(gè)模板。比如需要ajax刷新一個(gè)列表,以前的做法是后端生成html返回,或者前端用DOM構(gòu)建后加入,但現(xiàn)在有了template標(biāo)簽,html的架構(gòu)就不需要程序管了,只需要在特定的位置加入ajax請(qǐng)求到的數(shù)據(jù)即可,比如img的src或者其他text之類的,然后clone這個(gè)DOM,加入列表。其實(shí)許多人以前也應(yīng)該做過(guò)類似的事情,把一段html隱藏起來(lái),然后clone它并修改里面的屬性或者內(nèi)容,得到一個(gè)DOM,加入列表并顯示,用來(lái)刷新ajax列表。
3. ajax modelandview
萬(wàn)變不離其宗:
橫向切割業(yè)務(wù)/功能,縱向切割技術(shù)層。
先從功能出發(fā)把 site.js 分成多個(gè)獨(dú)立的模塊
:如果 site.js 只用在一個(gè)頁(yè)面上,就按照頁(yè)面上的功能拆分成模塊;又或者 site.js 用在多個(gè)頁(yè)面中,可以將 site.js 拆分成一對(duì)一頁(yè)面的入口小模塊,這些頁(yè)面之間可能有相似的模塊,這些模塊也單獨(dú)拆出來(lái),入口模塊放置每個(gè)頁(yè)面單獨(dú)的邏輯,并組織共享的模塊。以一個(gè)聊天工具為例,可以拆解為:雖然是平行放置的,但組件是有層次的,小組件功能獨(dú)立,大組件負(fù)責(zé)初始化和組合小組件。再?gòu)募夹g(shù)架構(gòu)的角度將代碼劃分為多個(gè)層次
:注意,并不是所有的項(xiàng)目都需要?jiǎng)澐謱哟危梢园凑枕?xiàng)目的大小和復(fù)雜程度劃分層次。項(xiàng)目越復(fù)雜就越需要注意將代碼劃分成不同的層次,而簡(jiǎn)單的項(xiàng)目就沒(méi)有必要了,甚至代碼都不用放在不同的文件。技術(shù)分層的方案就是 MVC,不管你或者流行的框架如何解讀 MVC,MVC 是一種以不變應(yīng)萬(wàn)變的架構(gòu)。例如:components
就放著 View + Controller,View 和 Controller 相對(duì)來(lái)說(shuō)聯(lián)系是比較緊密的,可以放在一起:chat.js 主要用來(lái)初始化其他模塊,綁定事件,處理事件,充當(dāng) Controller
style.css 樣式,沒(méi)什么可說(shuō)的
view.html 放著模板,業(yè)務(wù)簡(jiǎn)單的話,也可以去掉 view.html 直接在 chat.js 中拼接字符串
model
:如果項(xiàng)目簡(jiǎn)單這里放的就是和服務(wù)器端進(jìn)行數(shù)據(jù)交互的部分,比如 Ajax 請(qǐng)求等。如果項(xiàng)目復(fù)雜的話,可以分成兩層 Ajax 請(qǐng)求和 Model(View Model 或者數(shù)據(jù)集中管理的地方)。這部分很可能在很多 component 都會(huì)用到,所以可以獨(dú)立。router
:不多說(shuō),如果你的項(xiàng)目復(fù)雜到一定程度,有 router 的話,這是單獨(dú)放置的。單獨(dú)說(shuō)說(shuō) component:
一個(gè)模塊基礎(chǔ)組成:config:配置,來(lái)自源全局,或者來(lái)自于父組件
state:自身的狀態(tài),比如是聊天是通暢還是短線了,其他方法運(yùn)行的過(guò)程中需要這些狀態(tài)來(lái)判斷進(jìn)一步的操作
bindEvents:可以把大堆大堆的 $ 選擇綁定事件的代碼都放在這里
eventHandler:很多事件處理器
modifyView:很多對(duì)視圖更改
每個(gè)層都會(huì)有很多模塊,這些模塊又是按照業(yè)務(wù)/功能切分的。
工具篇:
切分原則都有了,工具的選擇也沒(méi)什么難的。項(xiàng)目不復(fù)雜,不重要,模塊拆下來(lái)之后也不多,那可以用像 RequireJS,Sea.js 這樣的加載器。主要就是處理下 JS 的模塊化。直接擼了之后,壓縮下,也不用合并,就在線上跑著也沒(méi)啥問(wèn)題。
項(xiàng)目復(fù)雜,重要,模塊多,那可以用用 browserify,使用 CommonJS,來(lái)組織代碼(也可以繼續(xù)使用 RequireJS,生態(tài)和工具還可以)。上線的時(shí)通過(guò)工具做好合并壓縮。
如果你采用的非常標(biāo)準(zhǔn)的模塊化開(kāi)發(fā),即每個(gè)模塊都有獨(dú)自的模板、Controller、樣式、圖片,那用 webpack 吧,webpack 的優(yōu)勢(shì)就如它的名字一樣,不是 js bundle,不是js loader,是 webpack,即其他資源也可以幫你打包處理好,這對(duì)于全模塊化開(kāi)發(fā)來(lái)講就爽多了。不用想該怎么組織除了 JS 之外的資源。
4. ajax模型
回答這個(gè)問(wèn)題,需要從兩方面回答MVC獲取傳遞的數(shù)據(jù)所用的方法都在這個(gè)接口中(從url中獲取數(shù)據(jù)or表單獲取數(shù)據(jù)or路由路徑中獲取數(shù)據(jù)。。。):IValueProvider獲取到數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行綁定的方法都在這個(gè)接口中:IModelBinder。MVC提供的默認(rèn)綁定類:DefaultModelBinder。如果你想了解具體的代碼,可以對(duì)其進(jìn)行反編譯
5. ajax模板引擎
前臺(tái)導(dǎo)航一般都是用模板頁(yè)做的,因?yàn)閷?dǎo)航都是在前臺(tái),,所以前臺(tái)頁(yè)面很少有iframe,frame,所以導(dǎo)航都是用HTML里的模板頁(yè)做,JSP的Include也湊合,不過(guò)沒(méi)有模板頁(yè)好做,至于樣式,網(wǎng)上有的是,推薦Jquery的導(dǎo)航插件。后臺(tái)導(dǎo)航,大多為TreeView樣式,后臺(tái)最簡(jiǎn)單的用frame做,如果你會(huì)Ajax的話用DIv就可以.
6. ajax格式及用法
1. jQuery的Ajax功能可以用來(lái)發(fā)送異步的HTTP請(qǐng)求,并且可以在不重新加載整個(gè)頁(yè)面的情況下更新頁(yè)面的部分內(nèi)容。
2. jQuery的Ajax功能可以通過(guò)HTTP GET或POST方法發(fā)送請(qǐng)求,可以接受XML、HTML、JSON、script和text等格式的數(shù)據(jù)。
3. jQuery的Ajax功能可以讓開(kāi)發(fā)者更容易地處理Ajax事件,比如處理請(qǐng)求成功、失敗、完成等事件,從而更容易地實(shí)現(xiàn)異步數(shù)據(jù)交互。
7. ajax官方文檔
Ajax是AsynchronousJavascriptandXML(以及DHTML等)的縮寫。這個(gè)短語(yǔ)是AdaptivePath的JesseJamesGarrett發(fā)明的,按照J(rèn)esse的解釋,這不是個(gè)首字母縮寫詞。
下面是Ajax應(yīng)用程序所用到的基本技術(shù):
HTML用于建立Web表單并確定應(yīng)用程序其他部分使用的字段。
Javascript代碼是運(yùn)行Ajax應(yīng)用程序的核心代碼,幫助改進(jìn)與服務(wù)器應(yīng)用程序的通信。
DHTML或DynamicHTML,用于動(dòng)態(tài)更新表單。我們將使用div、span和其他動(dòng)態(tài)HTML元素來(lái)標(biāo)記HTML。
文檔對(duì)象模型DOM用于(通過(guò)Javascript代碼)處理HTML結(jié)構(gòu)和(某些情況下)服務(wù)器返回的XML。
我們來(lái)進(jìn)一步分析這些技術(shù)的職責(zé)。以后的文章中我將深入討論這些技術(shù),目前只要熟悉這些組件和技術(shù)就可以了。對(duì)這些代碼越熟悉,就越容易從對(duì)這些技術(shù)的零散了解轉(zhuǎn)變到真正把握這些技術(shù)(同時(shí)也真正打開(kāi)了Web應(yīng)用程序開(kāi)發(fā)的大門)。
我有一些這方面的資料
有需要可以聯(lián)系
8. ajax網(wǎng)站模板
1. Mojo使用手冊(cè)是一本指南,幫助用戶更好地使用Mojo Web框架。
2. 原因是Mojo是Perl中一個(gè)強(qiáng)大的Web框架,它使用了許多現(xiàn)代化的Web技術(shù),例如WebSockets、HTTP/2和WebRTC。理解怎樣使用它,可以幫助開(kāi)發(fā)者更快、更高效地構(gòu)建Web應(yīng)用。
3. 內(nèi)容延伸包括:如何創(chuàng)建Web應(yīng)用、如何渲染模板、如何處理WebSockets和AJAX請(qǐng)求等。
4. 具體步驟:
a. 安裝Mojo:在終端輸入命令 "sudo cpan Mojolicious" 進(jìn)行安裝。
b. 創(chuàng)建一個(gè)Mojo應(yīng)用程序:在終端進(jìn)入一個(gè)新的目錄,然后輸入 "mojo generate app Myapp" 命令。這將創(chuàng)建一個(gè)名為 Myapp 的新Mojo應(yīng)用程序。
c. 編寫路由:在Myapp的lib/Myapp.pm 文件中編寫路由,定義處理不同URL請(qǐng)求的方法。
d. 編寫模板:在Myapp的templates/目錄中創(chuàng)建并編寫模板文件,以呈現(xiàn)網(wǎng)頁(yè)內(nèi)容。
e. 運(yùn)行應(yīng)用程序:在終端輸入 "perl Myapp" 命令,然后在Web瀏覽器中打開(kāi) http://localhost:3000 ,即可訪問(wèn)本地主機(jī)上的Myapp應(yīng)用程序。
f. 處理WebSockets和AJAX請(qǐng)求:在路由中定義處理WebSocket和AJAX請(qǐng)求的方法,并使用Mojolicious::Controller對(duì)象與前端交互。
5. 按數(shù)字順序劃分段落,使內(nèi)容更加清晰明了。
9. ajax模式
AJAX = 異步 Javascript 和 XML。 AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。 通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。 傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。 同步:腳本會(huì)停留并等待服務(wù)器發(fā)送回復(fù)然后再繼續(xù) 異步:腳本允許頁(yè)面繼續(xù)其進(jìn)程并處理可能的回復(fù) ps(交互模型就是Ajax在Browser端引入一個(gè)執(zhí)行引擎,它一邊應(yīng)付user的請(qǐng)求,一邊把某些必須交給服務(wù)器處理的東西背地里傳送給服務(wù)器,同時(shí)背地里把結(jié)果準(zhǔn)備好(接受服務(wù)器端的數(shù)據(jù)),展現(xiàn)給客戶的技術(shù)模式。Ajax增強(qiáng)了用戶的操作性。 而同步就是整個(gè)頁(yè)面都刷新,異步就是只刷新用了Ajax技術(shù)的部分) 跨域問(wèn)題簡(jiǎn)單的理解就是因?yàn)镴S同源策略的限制,a.com域名下的JS無(wú)法操作b.com或c.a.com下的對(duì)象 http://blog.sina.com.cn/s/blog_49fa034d0101gg49.html