作者zxc8899546 (183帅哥)
看板Soft_Job
标题[请益] 在js script里面插php json_encod
时间Thu Sep 10 15:59:54 2020
前些日子我在做某公司的测验,整个测验内有一个页面,是单纯显示今日星座运势。
我的做法是,後端的收到请求後捞出资料,接着再用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://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1599724796.A.5A3.html
1F:推 chan15: 你都已经是在该页写义大利面了,干麻 encode 再 parse.. 09/10 16:03
2F:推 knives: ok阿,要挖坑给别人,这样最好 09/10 16:07
3F:→ zxc8899546: 真的想知道什麽是正确做法,不是想挖坑 09/10 16:46
4F:推 Boston: 没有所谓的正确做法.... 你这样做也可以的 09/10 17:18
5F:→ kangan987: 该页面是php页面吧? 是的话判断完星座你直接echo 资 09/10 17:18
6F:→ kangan987: 料就可以了吧..? 09/10 17:18
7F:→ Boston: 比较「现代」的做法会是 fortune: JSON.parse(ajaxCall()) 09/10 17:19
8F:→ Boston: 透过 ajaxCall() 来从後端 fetch data 09/10 17:19
9F:→ zxc8899546: 但我倾向做一次request就好了,所以我是用这样的方式 09/10 17:31
10F:→ zxc8899546: 把需要的资料放到前端 09/10 17:31
11F:→ Boston: 并没标准答案,可能该团队重视 MVC 09/10 17:36
12F:推 tsao1211: 如果这页面内是整个由後端给出来而不是SPA,没道理不能这 09/10 18:02
13F:→ tsao1211: 样用,顶多优化成Jason encode的字串先用变数存起来,js 09/10 18:02
14F:→ tsao1211: 这边直接echo字串即可 09/10 18:02
15F:推 alihue: 其实他们用 C# 。开玩笑的,基本上前後端分离还是建议用 09/10 18:04
16F:→ alihue: js 来趴 09/10 18:04
17F:→ tsao1211: 因为有些作法是倾向view页面尽可能少逻辑和运算 09/10 18:05
18F:→ mackliu: 问题不在於造成什麽问题,而是写程式的风格,你的团队应该 09/10 19:39
19F:→ mackliu: 去沟通一个大家都遵守的风格或开发模式出来 09/10 19:40
20F:→ NewSpec: 写得很创意呀,适合转行做UI/UX 09/10 20:54
21F:→ ssccg: 为什麽要json_encode再JSON.parse? 直接输出JS不就好了 09/10 21:44
22F:→ ssccg: 用了json_encode塞在''中间,还要考虑escape ' 09/10 21:49
23F:推 lturtsamuel: 可以的 你如果上了跟我说一下 我好避开 09/10 22:05
24F:推 INFJ: 没问题,php一行能搞定,用ajax反而更多行程式码,还要考虑 09/10 22:57
25F:→ INFJ: 异步。简单的东西就用简单的做法解决 09/10 22:57
26F:推 MacPerson: 这些发很怪...... 09/10 23:05
27F:→ MacPerson: 写法 09/10 23:05
28F:→ lazarus1121: 跟在後端看到一堆角括号一样美 09/10 23:13
29F:→ Geison: 看应徵什麽吧 前端?後端?php工程师? 09/11 00:09
30F:→ Geison: 应徵前端这样写 不太符合潮流 09/11 00:11
31F:→ Rinorune: fortune = fortune || getFortune() 09/11 00:19
32F:→ Rinorune: 上面是纯前端的一种做法 前後端分离 比较好维护 09/11 00:25
33F:推 Hevak: JSON 在旧一点的 JS 引擎不一定合 JS 语法,要有实作 ES201 09/11 01:26
34F:→ Hevak: 9 JSON superset 的环境才有办法完全支援,这个算是直接把 09/11 01:26
35F:→ Hevak: JSON 丢到 code 里面要考虑的地方 09/11 01:27
36F:推 Hevak: 然後就算你有用单引号包起字串,也要注意输出的 JSON 有没 09/11 01:38
37F:→ Hevak: 有正确 escape 掉,可以注意一下像是 json_encode 有一些选 09/11 01:39
38F:→ Hevak: 项可以处理这些问题,可以拿像是「XSS JSON_HEX_TAG」之类 09/11 01:39
39F:→ Hevak: 的关键字去查一下别人怎麽避免这些安全风险 09/11 01:39
40F:推 bakedgrass: 谢谢分享。不过也提醒一下PTT有AJAX板 09/11 02:50
41F:推 superpai: 这样做法的问题是对js来说fortune会是一个全域变数,增 09/11 07:18
42F:→ superpai: 加维护的困难。但是这不算是技术问题就是了。 09/11 07:18
43F:→ realbout: 不太喜欢这种写法... 09/11 10:36
44F:→ erspicu: 不要有啥特殊问题状况 都OK 风格问题 每个人有自己的毛 09/11 10:44
45F:→ erspicu: 真的有遇到特殊状况撞墙再改就是 09/11 10:45
46F:→ zxc8899546: 了解了,谢谢大家许多意见 09/11 12:52
47F:推 leveger0903: 我在公司的专案也会这样做 09/11 18:48
48F:→ leveger0903: 但老实说这样写以後其他人接手会不好维护 09/11 18:49
49F:→ sniper2824: 不好维护应该可以写注解吧o_O 09/11 19:20
50F:推 zexon97: 群X齁 09/11 21:37
51F:→ zxc8899546: 想解释一下,这是後端职缺的测验,题目是实作laravel 09/12 09:06
52F:→ zxc8899546: auth&每小时爬虫星座资讯存起来。这页是我鸡婆做的, 09/12 09:06
53F:→ zxc8899546: 想说登入可以顺便看资料而已,但他们针对这页的做法 09/12 09:06
54F:→ zxc8899546: 来reject,因此我才好奇这个做法会造成什麽大问题吗? 09/12 09:06
55F:推 kurtsgm: 我觉得没啥大问题 顶多是没有前後分离得很乾净而已吧 09/12 10:18
56F:→ taikobo: 求职这件事本来就很看缘分,这不一定是被拒绝的真正理由 09/12 12:01
57F:→ superpandal: 你括号里面又不是json 根本不合需求 09/12 18:10
58F:→ superpandal: 这感觉是在乱做 09/12 18:11
59F:→ superpandal: 所以是用php直接生出js代码... 搞错 一样是烂做法就 09/12 18:13
60F:→ superpandal: 是了 09/12 18:13
61F:推 superpandal: 应该只有老系统会这样写 前後端分不开了 09/12 18:16
62F:→ superpandal: 这还有个致命的地方 如果东西是敏感讯息会很危险 09/12 18:22
63F:推 s861175: 这是间好公司 正确的筛掉不适合的人 10/20 10:26
64F:推 tsao1211: 徵後端工程师 结果用js来删人 这公司好在哪里? 11/29 08:03