mentor-program-day75

睡好睡滿的一天。

進度

今天把 todo list 的最後一塊拼圖完成(後端存取資料):

record

做完後突然感到怠惰,就跑去 Lidemy 看了其他的工具影片(webpack、SASS by 助教)。

webpack 真的是現代前端開發不可或缺的神器之一,不過也確實像 huli 說的,config 是比較麻煩的一點,希望之後能慢慢習慣跟掌握 webpack 的知識。

SASS 的部分助教講的詳細好懂,也學到很多我以前懶得去學的 functionif for 這些東西,因為這些進階語法對於小專案來說實在殺雞焉用牛刀,感受不到它們的好用之處。不過今天在上完助教的課後算是給我打了一門蠻好的基礎,之後要來花時間做點筆記了。

學到的事情

在用 AJAX 傳資料到後端時稍微卡了一下,因為平常都是用表單的方式來帶資料,例如說:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 取得表單元素
const form = $('form');
// 設定監聽器
form.bind('submit', (e) => {
// 停止預設行為
e.preventDefault();
// 發出 request
$.ajax({
url: 'http://localhost/peanu/todo-list/api_save_todo.php',
type: 'POST',
// 預期回傳的資料格式
dataType: 'json',
// 要傳過去的資料格式(表單)
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
// serialize() 取得表單的欄位值
data: $('form').serialize(),
success: (response) => console.log(response)
})
})

接著後端就能用 $_POST 拿到資料。

但現在資料格式變 JSON 後就不能這樣用,得用 file_get_contents('php://input') 才行,這一點還蠻不一樣的。

另外在做 json_encode 時也稍微有點混亂。一開始以為後端要把資料放到資料庫前要在 encode 一次,但其實不用,因為前端送來的資料就已經 encode 過了,這樣子是多此一舉,搞了場烏龍。

接著,後端最後要給前端 todo 的對應 id,原本想說要怎麼樣才能「從資料庫取出最新一筆資料」,上網查了一下發現可以用 MAX() 來取出最欄位的最大值,所以我用了這個方法:

1
SELECT MAX(id) AS id FROM todos;

但後來發現我還蠻傻的,怎麼不用:

1
SELECT * FROM todos ORDER BY id DESC LIMIT 1;

真是太蠢啦!不過也因此認識了一個新的解法,應該也不算吃虧啦。

題外話

希望能跟女友永遠在一起,這才是我最想珍惜的一切。

許願池

明天要把 week12 完成,希望啦~

PHP 當 POST 的資料格式為 JSON 時 mentor-program-day74
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×