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

看板Soft_Job作者 (183帥哥)時間3年前 (2020/09/10 15:59), 編輯推噓16(16046)
留言62則, 27人參與, 3年前最新討論串1/1
前些日子我在做某公司的測驗,整個測驗內有一個頁面,是單純顯示今日星座運勢。 我的做法是,後端的收到請求後撈出資料,接著再用json_encode的方式放在script bloc k內,因為頁面上是能切換星座來顯示運勢,所以我想用變數存起來。 fortune: JSON.parse('<?php echo json_encode($fortune); ?>') 但最後對方給的測驗結果是不適合,feeback是「在js script裡面插php json_encod」 請問這種做法是會造成什麼問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.131.187 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1599724796.A.5A3.html

09/10 16:03, 3年前 , 1F
你都已經是在該頁寫義大利麵了,幹麻 encode 再 parse..
09/10 16:03, 1F

09/10 16:07, 3年前 , 2F
ok阿,要挖坑給別人,這樣最好
09/10 16:07, 2F

09/10 16:46, 3年前 , 3F
真的想知道什麼是正確做法,不是想挖坑
09/10 16:46, 3F

09/10 17:18, 3年前 , 4F
沒有所謂的正確做法.... 你這樣做也可以的
09/10 17:18, 4F

09/10 17:18, 3年前 , 5F
該頁面是php頁面吧? 是的話判斷完星座你直接echo 資
09/10 17:18, 5F

09/10 17:18, 3年前 , 6F
料就可以了吧..?
09/10 17:18, 6F

09/10 17:19, 3年前 , 7F
比較「現代」的做法會是 fortune: JSON.parse(ajaxCall())
09/10 17:19, 7F

09/10 17:19, 3年前 , 8F
透過 ajaxCall() 來從後端 fetch data
09/10 17:19, 8F

09/10 17:31, 3年前 , 9F
但我傾向做一次request就好了,所以我是用這樣的方式
09/10 17:31, 9F

09/10 17:31, 3年前 , 10F
把需要的資料放到前端
09/10 17:31, 10F

09/10 17:36, 3年前 , 11F
並沒標準答案,可能該團隊重視 MVC
09/10 17:36, 11F

09/10 18:02, 3年前 , 12F
如果這頁面內是整個由後端給出來而不是SPA,沒道理不能這
09/10 18:02, 12F

09/10 18:02, 3年前 , 13F
樣用,頂多優化成Jason encode的字串先用變數存起來,js
09/10 18:02, 13F

09/10 18:02, 3年前 , 14F
這邊直接echo字串即可
09/10 18:02, 14F

09/10 18:04, 3年前 , 15F
其實他們用 C# 。開玩笑的,基本上前後端分離還是建議用
09/10 18:04, 15F

09/10 18:04, 3年前 , 16F
js 來趴
09/10 18:04, 16F

09/10 18:05, 3年前 , 17F
因為有些作法是傾向view頁面盡可能少邏輯和運算
09/10 18:05, 17F

09/10 19:39, 3年前 , 18F
問題不在於造成什麼問題,而是寫程式的風格,你的團隊應該
09/10 19:39, 18F

09/10 19:40, 3年前 , 19F
去溝通一個大家都遵守的風格或開發模式出來
09/10 19:40, 19F

09/10 20:54, 3年前 , 20F
寫得很創意呀,適合轉行做UI/UX
09/10 20:54, 20F

09/10 21:44, 3年前 , 21F
為什麼要json_encode再JSON.parse? 直接輸出JS不就好了
09/10 21:44, 21F

09/10 21:49, 3年前 , 22F
用了json_encode塞在''中間,還要考慮escape '
09/10 21:49, 22F

09/10 22:05, 3年前 , 23F
可以的 你如果上了跟我說一下 我好避開
09/10 22:05, 23F

09/10 22:57, 3年前 , 24F
沒問題,php一行能搞定,用ajax反而更多行程式碼,還要考慮
09/10 22:57, 24F

09/10 22:57, 3年前 , 25F
異步。簡單的東西就用簡單的做法解決
09/10 22:57, 25F

09/10 23:05, 3年前 , 26F
這些發很怪......
09/10 23:05, 26F

09/10 23:05, 3年前 , 27F
寫法
09/10 23:05, 27F

09/10 23:13, 3年前 , 28F
跟在後端看到一堆角括號一樣美
09/10 23:13, 28F

09/11 00:09, 3年前 , 29F
看應徵什麼吧 前端?後端?php工程師?
09/11 00:09, 29F

09/11 00:11, 3年前 , 30F
應徵前端這樣寫 不太符合潮流
09/11 00:11, 30F

09/11 00:19, 3年前 , 31F
fortune = fortune || getFortune()
09/11 00:19, 31F

09/11 00:25, 3年前 , 32F
上面是純前端的一種做法 前後端分離 比較好維護
09/11 00:25, 32F

09/11 01:26, 3年前 , 33F
JSON 在舊一點的 JS 引擎不一定合 JS 語法,要有實作 ES201
09/11 01:26, 33F

09/11 01:26, 3年前 , 34F
9 JSON superset 的環境才有辦法完全支援,這個算是直接把
09/11 01:26, 34F

09/11 01:27, 3年前 , 35F
JSON 丟到 code 裡面要考慮的地方
09/11 01:27, 35F

09/11 01:38, 3年前 , 36F
然後就算你有用單引號包起字串,也要注意輸出的 JSON 有沒
09/11 01:38, 36F

09/11 01:39, 3年前 , 37F
有正確 escape 掉,可以注意一下像是 json_encode 有一些選
09/11 01:39, 37F

09/11 01:39, 3年前 , 38F
項可以處理這些問題,可以拿像是「XSS JSON_HEX_TAG」之類
09/11 01:39, 38F

09/11 01:39, 3年前 , 39F
的關鍵字去查一下別人怎麼避免這些安全風險
09/11 01:39, 39F

09/11 02:50, 3年前 , 40F
謝謝分享。不過也提醒一下PTT有AJAX板
09/11 02:50, 40F

09/11 07:18, 3年前 , 41F
這樣做法的問題是對js來說fortune會是一個全域變數,增
09/11 07:18, 41F

09/11 07:18, 3年前 , 42F
加維護的困難。但是這不算是技術問題就是了。
09/11 07:18, 42F

09/11 10:36, 3年前 , 43F
不太喜歡這種寫法...
09/11 10:36, 43F

09/11 10:44, 3年前 , 44F
不要有啥特殊問題狀況 都OK 風格問題 每個人有自己的毛
09/11 10:44, 44F

09/11 10:45, 3年前 , 45F
真的有遇到特殊狀況撞牆再改就是
09/11 10:45, 45F

09/11 12:52, 3年前 , 46F
了解了,謝謝大家許多意見
09/11 12:52, 46F

09/11 18:48, 3年前 , 47F
我在公司的專案也會這樣做
09/11 18:48, 47F

09/11 18:49, 3年前 , 48F
但老實說這樣寫以後其他人接手會不好維護
09/11 18:49, 48F

09/11 19:20, 3年前 , 49F
不好維護應該可以寫註解吧o_O
09/11 19:20, 49F

09/11 21:37, 3年前 , 50F
群X齁
09/11 21:37, 50F

09/12 09:06, 3年前 , 51F
想解釋一下,這是後端職缺的測驗,題目是實作laravel
09/12 09:06, 51F

09/12 09:06, 3年前 , 52F
auth&每小時爬蟲星座資訊存起來。這頁是我雞婆做的,
09/12 09:06, 52F

09/12 09:06, 3年前 , 53F
想說登入可以順便看資料而已,但他們針對這頁的做法
09/12 09:06, 53F

09/12 09:06, 3年前 , 54F
來reject,因此我才好奇這個做法會造成什麼大問題嗎?
09/12 09:06, 54F

09/12 10:18, 3年前 , 55F
我覺得沒啥大問題 頂多是沒有前後分離得很乾淨而已吧
09/12 10:18, 55F

09/12 12:01, 3年前 , 56F
求職這件事本來就很看緣分,這不一定是被拒絕的真正理由
09/12 12:01, 56F

09/12 18:10, 3年前 , 57F
你括號裡面又不是json 根本不合需求
09/12 18:10, 57F

09/12 18:11, 3年前 , 58F
這感覺是在亂做
09/12 18:11, 58F

09/12 18:13, 3年前 , 59F
所以是用php直接生出js代碼... 搞錯 一樣是爛做法就
09/12 18:13, 59F

09/12 18:13, 3年前 , 60F
是了
09/12 18:13, 60F

09/12 18:16, 3年前 , 61F
應該只有老系統會這樣寫 前後端分不開了
09/12 18:16, 61F

09/12 18:22, 3年前 , 62F
這還有個致命的地方 如果東西是敏感訊息會很危險
09/12 18:22, 62F
文章代碼(AID): #1VMTpyMZ (Soft_Job)