ajax 吐回來的資料如何和 html 結合?.


#1

想請問一下…

ajax 吐回來的資料如何塞到 html/dom 中?
因為正常的做法一般都是…
⑴後端吐一段 html 碼,前端 js/jquery 塞到一個 div 中…
⑵後端吐一個 json,用 js 拼出html 塞到前端的 div 中…

rails 好像有 ujs 的功用…
有文章稍為介紹一下…
https://ihower.tw/rails4/ajax.html

官網也用 respond_to 的方式來說明…
不太了解 js.erb 中的 eacape_javascript (render :layout) 的觀念…
是可以把()內塞入 ruby code ?..

在結合 rails 下…
⑴感覺程式碼都蠻混亂的…
⑵感覺在 dom 內一個一個去塞 json ?有點髒的感覺…

是不是有比較好的方式?( ujs 的 remote ?)


#2

前端歸前端,後端歸後端… & 請把 ujs 當作無物,自己動手幹唄 … ujs 只有一點點方便而已,其他都還是要自己幹的

首先,推薦 json 版,因為你得到 json 後可以多傳類似 status 的資訊,錯誤還可以提醒使用者,類似用 toastr

https://github.com/CodeSeven/toastr

所以你可以先過濾過目前狀態,再進一步處理,而非只有 HTML 而已,等下吐 404 回來你也吃,這樣怎麼對?

再來,後端請弱化到只吐 json 即可,尤其是 AJAX 的 call,完全不用管 Rails 的手法,否則很 dirty,除非你在搞 react.js,否則其他 framework 基本上都差不多,當作一般的 json 回傳即可,而感覺程式碼混亂和髒 … 你有 jquery template 或是乾脆用 angular.js 來幹算了

請不要用 ujs 的任何 remote 手法來完成,請去搜尋『 Rails RJS 』就可以找到當時曇花一現的東西,很好用,很邪惡,但問題太多了,安全性非常有疑慮,整個淘汰掉沒人用了,所以努力點唄

如果真的要用 ujs 來做 remote,這邊有少量的 demo

http://wjp2013.github.io/rails/ujs-rjs-srj/

但相信我…真的沒有好用到哪裡去 & 你還會強迫你的前端一定要會 Rails 才行,而非和 server 間單純使用類似 API 的方式進行溝通之類的,整個很醜且切不乾淨|||,除非你們家使用了類似 react.js 的那種完整且流暢的方案,或是有能人能管控整個狀態的轉移,否則我這邊都不建議你們把前端和後端的東西通通攪在一起之類的|||


#3

想繼續詢問,如果讓後端請弱化到只吐 json ,那前端處理部分 像是塞 grid 或 form 的資料,是否
就要使用前端的 framework 會比較好 像 jqGrid …之類,或有其他做法? 如果是的話那目前那些處
理 grid、form 的 framework 比較好用呢?

謝謝!


#4

丟到前端後怎樣幹都可以啊,angular / backbone … anyway你想怎樣搞就怎樣搞,用熟悉或擅長的工具即可