[請益] 在js script裡面插php json_encod

作者: zxc8899546 (GC)   2020-09-10 15:59:54
前些日子我在做某公司的測驗,整個測驗內有一個頁面,是單純顯示今日星座運勢。
我的做法是,後端的收到請求後撈出資料,接著再用json_encode的方式放在script bloc
k內,因為頁面上是能切換星座來顯示運勢,所以我想用變數存起來。
fortune: JSON.parse('<?php echo json_encode($fortune); ?>')
但最後對方給的測驗結果是不適合,feeback是「在js script裡面插php json_encod」
請問這種做法是會造成什麼問題嗎?
作者: erspicu (.)   2020-09-11 10:44:00
不要有啥特殊問題狀況 都OK 風格問題 每個人有自己的毛真的有遇到特殊狀況撞牆再改就是
作者: realbout (薩摩訶)   2020-09-11 10:36:00
不太喜歡這種寫法...
作者: chan15 (ChaN)   2020-09-10 16:03:00
你都已經是在該頁寫義大利麵了,幹麻 encode 再 parse..
作者: knives   2020-09-10 16:07:00
ok阿,要挖坑給別人,這樣最好
作者: zxc8899546 (GC)   2020-09-10 16:46:00
真的想知道什麼是正確做法,不是想挖坑
作者: Boston (Boston)   2020-09-10 17:18:00
沒有所謂的正確做法.... 你這樣做也可以的
作者: kangan987 (Jon.Snow)   2020-09-10 17:18:00
該頁面是php頁面吧? 是的話判斷完星座你直接echo 資料就可以了吧..?
作者: Boston (Boston)   2020-09-10 17:19:00
比較「現代」的做法會是 fortune: JSON.parse(ajaxCall())透過 ajaxCall() 來從後端 fetch data
作者: zxc8899546 (GC)   2020-09-10 17:31:00
但我傾向做一次request就好了,所以我是用這樣的方式把需要的資料放到前端
作者: Boston (Boston)   2020-09-10 17:36:00
並沒標準答案,可能該團隊重視 MVC
作者: tsao1211 (Sunday)   2020-09-10 18:02:00
如果這頁面內是整個由後端給出來而不是SPA,沒道理不能這樣用,頂多優化成Jason encode的字串先用變數存起來,js這邊直接echo字串即可
作者: alihue (wanda wanda)   2020-09-10 18:04:00
其實他們用 C# 。開玩笑的,基本上前後端分離還是建議用js 來趴
作者: tsao1211 (Sunday)   2020-09-10 18:05:00
因為有些作法是傾向view頁面盡可能少邏輯和運算
作者: mackliu (回不去的大叔)   2020-09-10 19:39:00
問題不在於造成什麼問題,而是寫程式的風格,你的團隊應該去溝通一個大家都遵守的風格或開發模式出來
作者: NewSpec (新規格)   2020-09-10 20:54:00
寫得很創意呀,適合轉行做UI/UX
作者: ssccg (23)   2020-09-10 21:44:00
為什麼要json_encode再JSON.parse? 直接輸出JS不就好了用了json_encode塞在''中間,還要考慮escape '
作者: lturtsamuel (港都都教授)   2020-09-10 22:05:00
可以的 你如果上了跟我說一下 我好避開
作者: INFJ   2020-09-10 22:57:00
沒問題,php一行能搞定,用ajax反而更多行程式碼,還要考慮異步。簡單的東西就用簡單的做法解決
作者: MacPerson (Gary)   2020-09-10 23:05:00
這些發很怪......寫法
作者: lazarus1121 (...)   2020-09-10 23:13:00
跟在後端看到一堆角括號一樣美
作者: Geison (Angels)   2020-09-11 00:09:00
看應徵什麼吧 前端?後端?php工程師?應徵前端這樣寫 不太符合潮流
作者: Rinorune (杜)   2020-09-11 00:19:00
fortune = fortune || getFortune()上面是純前端的一種做法 前後端分離 比較好維護
作者: Hevak (Arthow Eshes)   2020-09-11 01:26:00
JSON 在舊一點的 JS 引擎不一定合 JS 語法,要有實作 ES2019 JSON superset 的環境才有辦法完全支援,這個算是直接把JSON 丟到 code 裡面要考慮的地方然後就算你有用單引號包起字串,也要注意輸出的 JSON 有沒有正確 escape 掉,可以注意一下像是 json_encode 有一些選項可以處理這些問題,可以拿像是「XSS JSON_HEX_TAG」之類的關鍵字去查一下別人怎麼避免這些安全風險
作者: bakedgrass (蒙古烤小草)   2020-09-11 02:50:00
謝謝分享。不過也提醒一下PTT有AJAX板
作者: superpai (超級白)   2020-09-11 07:18:00
這樣做法的問題是對js來說fortune會是一個全域變數,增加維護的困難。但是這不算是技術問題就是了。
作者: zxc8899546 (GC)   2020-09-11 12:52:00
了解了,謝謝大家許多意見
作者: leveger0903 (脆笛酥)   2020-09-11 18:48:00
我在公司的專案也會這樣做但老實說這樣寫以後其他人接手會不好維護
作者: sniper2824 (月夜)   2020-09-11 19:20:00
不好維護應該可以寫註解吧o_O
作者: zexon97 (過渡期)   2020-09-11 21:37:00
群X齁
作者: zxc8899546 (GC)   2020-09-12 09:06:00
想解釋一下,這是後端職缺的測驗,題目是實作laravelauth&每小時爬蟲星座資訊存起來。這頁是我雞婆做的,想說登入可以順便看資料而已,但他們針對這頁的做法來reject,因此我才好奇這個做法會造成什麼大問題嗎?
作者: kurtsgm   2020-09-12 10:18:00
我覺得沒啥大問題 頂多是沒有前後分離得很乾淨而已吧
作者: taikobo (勉強になるなぁ...)   2020-09-12 12:01:00
求職這件事本來就很看緣分,這不一定是被拒絕的真正理由
作者: superpandal   2020-09-12 18:10:00
你括號裡面又不是json 根本不合需求這感覺是在亂做所以是用php直接生出js代碼... 搞錯 一樣是爛做法就是了應該只有老系統會這樣寫 前後端分不開了這還有個致命的地方 如果東西是敏感訊息會很危險
作者: s861175 (s861175)   2020-10-20 10:26:00
這是間好公司 正確的篩掉不適合的人

Links booklink

Contact Us: admin [ a t ] ucptt.com