Thêm/sửa/xóa khóa học với Fetch và REST API

Поделиться
HTML-код
  • Опубликовано: 18 сен 2024
  • 👉 Xem Lộ Trình Học: fullstack.edu....
    👉 Đăng Ký Học Offline Tại F8: short.f8team.d...
    Trong video này mình đưa ra một ví dụ hơn giản làm chức năng Thêm/sửa/xóa khóa học với Fetch và REST API. Tuy chỉ là ví dụ nhỏ nhưng trong thực tế đây chính là cách mà website tương tác với dữ liệu qua API.
    #hoclaptrinh #hoclaptrinhmienphi #javascript #frontend #backend #devops #f8
    -------
    ☻ Phần mềm sử dụng trong video:
    Công cụ dịch Tiếng Anh: bit.ly/2Wsuhet
    Công cụ đo đạc giao diện web: s.net.vn/D8kL
    Công cụ viết CV xin việc chuyên nghiệp: mycv.vn
    --------------
    ☻ Khóa học lập trình web MIỄN PHÍ:
    Kiến thức nhập môn: fullstack.edu....
    Xây dựng giao diện với HTML, CSS: fullstack.edu....
    Xây dựng web responsive: fullstack.edu....
    Lập trình Javascript cơ bản: fullstack.edu....
    Lập trình Javascript nâng cao: fullstack.edu....
    Làm việc với Terminal & Ubuntu: fullstack.edu....
    Xây Dựng Website với ReactJS: fullstack.edu....
    Xây dựng web với Node & Express: fullstack.edu....
    HTML, CSS tips: fullstack.edu....
    Ứng dụng cảnh báo khi sờ lên mặt: fullstack.edu....
    Xem thêm tại: fullstack.edu....
    -------------------------------------
    F8 Official
    (c) Sơn Đặng
    Website: fullstack.edu.vn
    Facebook cá nhân: / sondnf8
    Nhóm Học Lập Trình Web: / f8official
    Email: contact@fullstack.edu.vn
    © Bản quyền thuộc về Channel F8 Official ☞ Do not Reup
    © Nghiêm cấm sử dụng video nhằm mục đích thương mại dưới mọi hình thức.

Комментарии • 144

  • @vuthuatha1777
    @vuthuatha1777 3 года назад +64

    Hôm nay em mới phỏng vấn xong. Với vị trí frontend. Những câu hỏi người tuyển dụng hỏi đều có hết trong những kiến thức anh đã dạy. Và họ đáng giá tốt về buổi phỏng vấn. Em thật sự cảm ơn anh đã cho em những kiến thức bổ ích này. Em sẽ cố gắng hơn nữa. Em chúc anh và gia đình anh thật mạnh khỏe và nhiều niềm vui. I love Mr. Sơn

    • @F8VNOfficial
      @F8VNOfficial  3 года назад +5

      Chúc mừng em nha

    • @hieptrinh8215
      @hieptrinh8215 3 года назад

      bạn phỏng vấn fresher hay intern ạ?

    • @GiangNguyen-cg8nm
      @GiangNguyen-cg8nm 3 года назад

      Cho mình hỏi là những phần nào của F8 channel được hỏi trong buổi phỏng vấn vậy ạ?

    • @PhongLe-zd9iw
      @PhongLe-zd9iw 2 года назад +1

      ngta hỏi những gì vậy bạn chia sẻ mình với đc ko bn

    • @hieptx1909
      @hieptx1909 Год назад +1

      @@F8VNOfficial Anh Sơn ơi còn các phần dưới như localStorage, ... các thứ khác thì anh để ở series nào vậy ạ, em học xong js cơ bản lẫn nâng cao rồi nhưng k thấy ạ

  • @HuaTonat
    @HuaTonat 3 года назад +1

    em cám ơn anh Sơn, mong a nhiều sức khoẻ và đầy nhiệt huyết để truyền lửa cho những đứa tụi em, cám ơn a vì những kiến thức của a mang lại. Em hóng anh dạy reactjs quá :))

  • @HuyNguyen-vl4yl
    @HuyNguyen-vl4yl 2 года назад +1

    Quá hay , e xem xong bài này tổng hợp cả 1 hệ thống kiến thức cộng với việc cleancode

  • @luukhoigaming510
    @luukhoigaming510 2 года назад +1

    Wow what an acNice tutorialevent! Best of luck for the rest of your future, I’m looking forward to being able to invest when I turn 21 in November!

  • @vuongqtvn
    @vuongqtvn 3 года назад +2

    quá tuyệt vời anh ơi

  • @nguyenhuuhoan5687
    @nguyenhuuhoan5687 4 года назад +2

    🍜 Hay quá anh ơi 🥳, giúp em hệ thống lại kiến thức + clean code hơn nhiều ạ ✅

  • @namvo7544
    @namvo7544 Год назад

    Loay hoay tí cũng làm được cái sửa mừng quá

  • @guardian3869
    @guardian3869 Год назад +2

    code cho ae tham khảo phần edit nhe:
    1. thêm class vào trong phần render
    ${course.name}
    ${course.description}
    2. tạo 2 function , 1 function edit , 1 function để xử lý trong edit
    function editFormCourse(id, data, callback) {
    var options = {
    method: "PUT",
    headers: {
    "Content-Type": "application/json",
    },
    body: JSON.stringify(data)
    };
    fetch(courseApi + '/' + id, options)
    .then(function(response){
    response.json();
    })
    .then(callback)
    }
    function handleEditFormCourse(id){
    // lấy class cho từng phần tử name và description
    var name = document.querySelector(".name-" + id);
    var desc = document.querySelector(".desc-" + id);
    var btnEdit = document.querySelector('#create');
    // lấy ra ô input
    var nameInput = document.querySelector('input[name="name"]');
    var descriptionInput = document.querySelector('input[name="description"]');
    if (name && desc) { // nếu có
    nameInput.value = name.innerText; // gán ô input = giá trị của name
    descriptionInput.value = desc.innerText;
    btnEdit.innerText = "Save";
    }
    btnEdit.onclick = function() {
    var formData = {
    name: nameInput.value,
    description: descriptionInput.value
    }
    editFormCourse(id, formData, function () {
    getCourses(renderCourses);
    })
    // edit xong thì trả về lại tạo form
    btnEdit.innerText = "Create";
    nameInput.value = '';
    descriptionInput.value = '';
    handleCreateForm()
    }
    }

  • @tnln7893
    @tnln7893 4 года назад +3

    Quá hay, anh làm vài video chuyên sâu về chủ đề này được không ạ, e không tìm thấy nhiều nguồn học về API lắm

  • @katynguyen287
    @katynguyen287 2 года назад

    Toát mồ hôi hột viết xong cái tính năng sửa, mà viết xong cảm giác thông não quá ạ

    • @chienphung9633
      @chienphung9633 Год назад

      bạn còn source code phần đó ko cho mình xin với

  • @the2hg442
    @the2hg442 2 года назад +7

    Anh ơi cho em hỏi là trong hàm createCourse thì nó chuyền đi dữ liệu để thêm vào trong file db.json sau đấy hàm renderCourse sẽ map vào trong cái dữ liệu đó thì tự động sẽ render ra dữ liệu thêm vào khi tạo mới mà anh đâu cần gọi cái promise callback để render dữ liệu trong hàm createCourse để render lại anh, em không viết đoạn ấy vẫn render dữ liệu ra bình thường ý

    • @thanhlongle4968
      @thanhlongle4968 2 года назад +3

      tôi cũng thấy vậy ông ạ, nó truyền new courses vào rồi, thì thằng render nó tự xử lý đâu cần phải promise callback nữa phải ko

  • @matis4779
    @matis4779 4 года назад +2

    Hay quá a

  • @inhxuanhanh3978
    @inhxuanhanh3978 2 года назад +1

    Cái callback ảo thiệt đó

  • @ThanhTran-yz4po
    @ThanhTran-yz4po 2 года назад +2

    mn đổi extension: Preview on Web Server là không bị refresh lại trang nha

  • @yukitran2426
    @yukitran2426 3 года назад +1

    Anh ơi ! Nào anh ra Reactjs vậy anh.Ngồi hóng quá anh ơi

  • @tamlongnguyen6604
    @tamlongnguyen6604 3 года назад +2

    cho e hỏi chút ạ ... khi e ấn button thêm sửa xóa thì nó reload lại trang... không biết do e code sai chỗ nào hay do postman ạ?/ e cảm ơn

  • @voxuanhoa1166
    @voxuanhoa1166 2 года назад +1

    mong anh Sơn ra thêm Video về asyns await

    • @F8VNOfficial
      @F8VNOfficial  2 года назад +3

      Rảnh anh ra thêm sau nhé

    • @voxuanhoa1166
      @voxuanhoa1166 2 года назад +1

      @@F8VNOfficial ok anh, em dân trái nghành, giờ kiểu bị nghiện giọng anh Sơn rồi, lúc nào cũng hóng video mới từ anh

  • @lightd1404
    @lightd1404 Год назад

    ôi cuối cùng cũng làm đc cái thêm sửa mừng ỉa chảy =))

    • @chienphung9633
      @chienphung9633 Год назад

      bạn ơi cho mình xin code phần edit với

    • @lightd1404
      @lightd1404 Год назад

      @@chienphung9633 Lâu quá roi mh xóa mất phàn đó lun r =))

  • @lewiswill3663
    @lewiswill3663 3 года назад +1

    Bạn làm hướng dẫn về FormData đi ạ!

  • @uctamnguyen1593
    @uctamnguyen1593 3 года назад

    thanks anh Sơn dzai

  • @enzo4828
    @enzo4828 Год назад +2

    anh ơi, phiền a update nốt phần edit course được không anh.

  • @nguyenvanthanh845
    @nguyenvanthanh845 3 года назад +1

    anh dạy cách viết API bóc tách dữ liệu web đi ạ

  • @kyxaoweb3997
    @kyxaoweb3997 3 года назад +1

    anh có thể hướng dẫn em sử dụng response header của backend và frontend như thế nào cho chính xác được ko ạ

  • @ngoctruongtran9641
    @ngoctruongtran9641 3 года назад +3

    a có khóa học offline nào không

  • @tuananh-tp8op
    @tuananh-tp8op 2 года назад +1

    sao e post dữ liệu đều bị refresh trang vậy ạ, sử dụng postman cũng bị tự tải lại, làm sao để tắt tự tải lại khi đẩy dữ liệu vậy ạ, (vấn đề không phải ở bên html đâu ạ chỉ khi đẩy dữ liệu mới bị)

  • @NamPham-yp1lo
    @NamPham-yp1lo 3 года назад +1

    Cho mình hỏi đôi chút ạ?Ví dụ mình làm cái api nó trả về cho mình đối tương json chạy trên trình duyệt web á,nhưng đó chỉ là local.Nhưng minh muốn dùng 1 cái máy khác truy cập vô cái link đó vẫn lấy được đối tượng json trả về .Bước tiếp theo là cần làm gì ạ?Mình xin cảm ơn!

  • @huyennguyenthithanh4561
    @huyennguyenthithanh4561 2 года назад +1

    cho mình hỏi từ bài 6: DOM location đến bài 10 sao mình không thấy có video vậy ạ?

  • @nhungcauchuyen_reddit
    @nhungcauchuyen_reddit Год назад +1

    cho mình hỏi sao mình ko thấy các bài như localstrorage va sessionstorage vậy ạ

  • @nhatnguyen381
    @nhatnguyen381 3 года назад +1

    Anh ơi. cho em hỏi. bây giờ em fetch data ra rồi. em muốn ấn vào 1 sản phẩm thì nhảy đến 1 template mới rồi hiện ra danh sách sản phẩm. thì làm như nào ạ?

  • @centralsports1557
    @centralsports1557 2 года назад +2

    Gọi Fetch với method:POST mà cứ bị auto repeater, mỗi lần refesh code hoac page tự động add 3 - 4 record data là do lỗi gì vậy thầy? Cám ơn thầy!

    • @truongnguyen8325
      @truongnguyen8325 2 месяца назад

      bạn sủa nhu ưnafo vậy mình cũng biij

  • @dungphanquang3512
    @dungphanquang3512 Год назад

    good

  • @NamHoang-wk8ik
    @NamHoang-wk8ik 2 года назад

    7:53 dùng phím tắt nào để nhảy ra thẻ trong template string vậy ạ.

  • @dusw20-phamvan58
    @dusw20-phamvan58 Год назад +1

    anh ơi, cái đoạn courses.map(function(course) sao của e nó cứ báo là courses.map is not a function vậy nhỉ

    • @TungPham-dt6tr
      @TungPham-dt6tr Год назад

      b paste code lên đây mn chỉ cho b

    • @GiangDuongTruong-xq2cm
      @GiangDuongTruong-xq2cm 5 месяцев назад

      @@TungPham-dt6tr
      var courceAPI = '127.0.0.1:5500/db.json';
      function start(){
      getListing(renderListing);

      }
      start();
      function getListing(callback){
      fetch(courceAPI)
      .then(function(respone){
      return respone.json();
      }).then(callback);
      }
      function renderListing(coures){
      var listing = document.querySelector("#list");

      }
      // mình bị y chang lỗi như bạn

  • @TienPhan-ih6ij
    @TienPhan-ih6ij Год назад +1

    Đọc cmt hóng xem có ai làm edit không mà không thấy

  • @quanghuynguyen2929
    @quanghuynguyen2929 3 месяца назад

    Mọi người ơi cho em hỏi khi em tạo 1 khoá học mới thì id không phải là số mà lại là kiểu 6fd5, 937a,... vậy ạ

  • @sitran6342
    @sitran6342 2 года назад +2

    Cho mình hỏi chỗ đoạn 4:20 chỗ đoạn callback mình m hiểu rõ lắm ai giải thích cho mình hiểu với

  • @truongnguyen8325
    @truongnguyen8325 2 месяца назад

    Unexpected token 'i',
    "title=danh%20sach%20" is not valid JSON anh ơi em làm như anh ấn post rồi thêm key-value nhưng mà posman hiện thông báo lỗi như này anh ạ

  • @khoa1582
    @khoa1582 3 года назад

    Ra video tiếp đi anh ơi

  • @TrongNguyen-ym8ts
    @TrongNguyen-ym8ts 3 года назад

    Em có thắc mắc là mỗi lần bấm thêm hoặc xóa thì minh sẽ gọi API vậy khi gọi đó nó có làm refresh lại trang của mình k ạ... do em thấy code của anh nó k refresh trang mà khi em làm theo cách của em thì mỗi lần như v nó cứ refresh lại trang

  • @hieptx1909
    @hieptx1909 Год назад +1

    Anh Sơn ơi còn các phần dưới localStorage, ... các thứ khác thì anh để ở series nào vậy ạ, em học xong js cơ bản lẫn nâng cao rồi nhưng k thấy ạ

    • @ChangMasbu
      @ChangMasbu Год назад +1

      kênh cũ của anh sơn có giảng về phần đó ấy bạn , bạn search với key đấy là ra luôn

    • @luisdato1712
      @luisdato1712 Год назад +1

      @@ChangMasbu kênh cũ của anh sơn là kênh nào vậy bạn

    • @hieptx1909
      @hieptx1909 Год назад +1

      @@ChangMasbu bạn ơi kênh cũ của anh ấy là gì vậy bạn

  • @haipd4811
    @haipd4811 3 года назад

    anh Sơn ơi cho em hỏi là có thêm được dữ liệu dạng ảnh không ạ

  • @igdev6095
    @igdev6095 3 года назад +2

    30:55 tại sao xóa mất ở DOM mà database cũng bị mất lun là sao vậy a

    • @igdev6095
      @igdev6095 3 года назад

      à mình hiểu r, bn nào biết cmt thử xem coi có cùng ý kiến k

    • @fairyofworld
      @fairyofworld 3 года назад

      bạn gửi một cái request bằng fetch với method là delete thì json-server nó tự hiệu thì nó tự xóa ở db thôi, còn cái việc xóa mất ở DOM chỉ là xử lí phía client để người dùng có thể thấy được mà không cần refresh lại trang. Vì khi refresh lại thì nó sẽ chạy lại hàm start() là sẽ call lại api get nên giảm hiệu năng

    • @nguyenhuykhaik16_hcm36
      @nguyenhuykhaik16_hcm36 Год назад

      @@igdev6095 bác hiểu khúc này, giải thích lại giúp em với ạ. Vì xóa ở DOM mà không gửi request DELETE thì không thể xóa ở Database được ạ.

  • @leolemon4505
    @leolemon4505 Год назад +1

    cái của em gửi request đi chưa kịp dụng then() bắt reponse thì nó tự f5 lại trang @@

    • @aduhacker
      @aduhacker 5 месяцев назад

      bạn fix được chưa chỉ mình với

  • @vancongang3092
    @vancongang3092 2 года назад

    Anh ơi cái posman có dùng nhiều ko ạ, e tải về vs cop link vào chạy nó lỗi ạ, ko hiểu sao

  • @baoduy7198
    @baoduy7198 3 года назад

    Hóng ReactJs quá

  • @giaitri24h16
    @giaitri24h16 2 года назад

    AD cho em code của em 26:16 code của em code như anh. nhưng đến phần này bấm xóa là xóa được phần tử . chứ không cần thao tác với DOM để xóa nữa. sao lại có sự khác nhau vậy ạ

    • @cuongoan9955
      @cuongoan9955 2 года назад

      lúc đấy xóa dữ liệu trên fake server rồi thì làm gì còn để hiện ra đâu

  • @nguyenvanbao4362
    @nguyenvanbao4362 2 года назад +3

    cho em hỏi sao mỗi lần em gửi đi api để tạo khóa học mới thì web nó auto load lại có cách nào để khắc phục không ạ
    em cảm ơn

    • @thutrananh6061
      @thutrananh6061 2 года назад

      mình cũng bị như vậy mà không tìm ra cách khắc phục

    • @t04n26
      @t04n26 Год назад

      e.preventdefault()

  • @leephan1912
    @leephan1912 3 года назад +1

    e có thắc mắc là lúc ở hàm renderCourse() e có thêm tên cho class h4 với p, mà khi querySelector ra ờ dưới start() hoặc ở trong start() đều ra null nhỉ? chỉ khi bỏ vô các hàm event thì mới query ra.

    • @quocnhiennguyen1246
      @quocnhiennguyen1246 3 года назад +1

      có phải bạn thêm file js ở head đúng ko, nếu v thì chuyển đoạn ấy xuống dưới thẻ h4 với p là đc nha

  • @sunkid8293
    @sunkid8293 3 года назад +1

    Sao code e chạy tới đoạn fetch() method POST nó cứ refesh lại trang.

    • @minhtanpham5357
      @minhtanpham5357 3 года назад

      mình cũng bị giống vậy, xóa hay create nó cũng tự refesh lại

  • @truonggiangnguyen3693
    @truonggiangnguyen3693 Год назад

    Mn ơi mình muốn học phần này từ bài đầu tiên, cho mình hỏi bắt đầu từ bài nào ạ

  • @tgmtv8131
    @tgmtv8131 3 месяца назад

    A ơi tại sao khi e thay đổi dữ liệu json server web nó bị tự load lại

    • @F8VNOfficial
      @F8VNOfficial  3 месяца назад

      Em bỏ json server ra khỏi dự án HTML đang chạy với live server em nhé.

  • @資工系日四技阮黃英
    @資工系日四技阮黃英 Год назад

    Mọi người ơi cho mình hỏi
    function handleDeleteCourse(id) {
    var options= {
    method:'DELETE',
    headers: {
    'Content-Type': 'application/json',
    }
    }
    fetch(courseAPI+'/'+id,options)
    .then(function(response) {
    response.json();
    })
    .then(function(){
    var courseItem = document.querySelector('.course-item-'+id);
    if(courseItem) {
    courseItem.remove();
    }
    });
    Hàm handleDeleteCourse của mình không gọi lại API mà sao mỗi khi mình thực hiện xóa đi một course thì tự động load lại trang vậy.

    • @atnguyen5240
      @atnguyen5240 Год назад

      chắc do extension của Live Server đấy bạn

    • @lightd1404
      @lightd1404 Год назад

      b tách file của json sever riêng file của html css riêng nhá b là sẽ hết

  • @BackendNestJs
    @BackendNestJs Год назад

    sao em create toàn ra obj thôi ạ , mặc dù code giống anh luôn ạ

  • @ddung203
    @ddung203 Год назад

    đoạn 29:40 e làm như vậy rồi nhưng mà sao nó vẫn reload lại trang nhỉ :

  • @luisdato1712
    @luisdato1712 Год назад

    Anh ơi em có 1 file json up lên github nhưng khi fetch file đó vs đường link của github thì nó bị lỗi, anh giúp em fix lỗi đc ko ạ

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Lỗi như nào em ơi, console có báo đỏ gì ko em ơi?

  • @james-rx8kw
    @james-rx8kw 3 года назад

    anh ơi sao anh khóa hết mấy bài giảng v ạ

  • @heofa7733
    @heofa7733 2 года назад +3

    lời khuyên cho anh em là hãy nắm chắc bài form validation rồi hãy chiến tới bài này nhé. Nếu không là sẽ lùng bùng đấy =))

    • @namnguyennhat6493
      @namnguyennhat6493 Год назад

      Mà ở trên trang F8 thì nó lại nằm chung trong phần JSon luôn ông 😢 nên tới này cái mơ mơ liền

  • @naturalsound3114
    @naturalsound3114 Год назад

    sao em check cai network no cu hien ra GET method hoai vay mn mac du minh use POST vs DELETE

    • @ucluu2948
      @ucluu2948 4 месяца назад

      bạn giống mình. Không hiểu sao bị vậy luôn. Bạn giờ có fix được chưa ạ

  • @laocong2537
    @laocong2537 2 года назад

    16:00 25:31

  • @TuTran-th3wd
    @TuTran-th3wd 3 года назад

    Cho mình hỏi tại sao lại dùng method delete lại phải /id nhỉ

    • @kanekiken3770
      @kanekiken3770 3 года назад

      id là khóa chính nhé xóa khóa chính là xóa hết body

    • @onggiao7979
      @onggiao7979 3 года назад

      tại api để xóa post của json server là local..../post/id với method là Delete

  • @giaitri24h16
    @giaitri24h16 2 года назад +1

    Tại sao mình không truyền trược tiếp hàm createCourse(formData,
    getCourse(renderCourse)
    ); mà lại phải thông qua function: createCourse(formData,function () {
    getCourse(renderCourse)
    }); Ai giải thích hộ mình với 21:44

    • @HuyPham-zv7el
      @HuyPham-zv7el 2 года назад

      bời vì createCourse nhận vào 2 tham số data, callback, mà callback là function, còn nếu bạn gọi luôn getCourse(renderCourse) nó sẽ không thoả mãn cái .then(callback) của hàm createCourse

    • @duyphantan9529
      @duyphantan9529 2 года назад

      getCourse(renderCourse) tổng thể nó là một promise chứ không phải là một function để callback ý, chỉ có renderCourse mới là funcion thôi nên nó mới được truyền trực tiếp vào callback của getCourse. mình lúc đầu cũng bị hiểu lầm cái này

    • @TungPham-dt6tr
      @TungPham-dt6tr Год назад

      Hình như b truyền trực tiếp ko qua function vẫn chạy đc nha, vì getCourse nó là 1 function

  • @imthinh.helloworld7925
    @imthinh.helloworld7925 3 года назад +1

    tại sao chrome của em nó cứ tự reload lại trang vậy ạ

    • @nguyenvanucok15dn61
      @nguyenvanucok15dn61 3 года назад

      cùng câu hỏi, chrome của mình cũng vậy, mình tưởng mình code sai

    • @vienong2772
      @vienong2772 3 года назад +2

      @@nguyenvanucok15dn61 bạn để nơi JSON ra folder khác nhé, còn folder html ra folder khác (Kiểu nó bị chung với live-server ý)

    • @leephan1912
      @leephan1912 3 года назад

      ​@@vienong2772Thanks bác nó ko reload rồi. Nhưng mà ném nó sang folder khác phải bật 2 cái vscode 1 cái để chạy json server với 1 cái để code hả bác? Mình phải bật 2 cái mới được, chứ đổi sang folder khác là json server nó sập luôn :D

    • @tomtoan8131
      @tomtoan8131 3 года назад +1

      @@leephan1912 ở VScode bác chọn file-> add folder to workspace để thêm folder server vào workspace hiện tại nhé

    • @leephan1912
      @leephan1912 3 года назад

      @@tomtoan8131 mình bật cmd cho nó chạy riêng với vscode luôn r bác. :v thấy cũng tiện.

  • @honglexuan3930
    @honglexuan3930 3 года назад

    ai giúp mình với ạ, mình create thành công rồi nhưng id không tăng dần mà lại thành một chuỗi ramdom

    • @lightd1404
      @lightd1404 Год назад

      ảo z cho mình xem code được không =))

    • @ucluu2948
      @ucluu2948 4 месяца назад

      bạn cũng y hệt mình

  • @ltxvlogs1944
    @ltxvlogs1944 3 года назад

    Có ai làm phần update rồi không.Cho mình tham khảo nhé

    • @_PhanQuocTrieu
      @_PhanQuocTrieu 3 года назад

      có chưa bác t xin tham khảo với viết k đc :((

    • @thangnguyenchien6986
      @thangnguyenchien6986 3 года назад +2

      @@_PhanQuocTrieu
      function updateCourse(id,data,callback){
      var options = {
      method: 'PUT',
      headers: {
      'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
      }
      fetch(coursesAPI + "/"+id,options)
      .then(function(response){
      return response.json();
      })
      .then(callback)
      }
      function handleUploadForm(id){
      var courseItem= document.querySelector(".course-item-"+ id);
      var getName=courseItem.querySelector("h4").innerText;
      var getDescription=courseItem.querySelector("p").innerText;
      var name=document.querySelector("input[name='name']")
      var description=document.querySelector("input[name='description']")
      name.value=getName;
      description.value=getDescription;
      if(!document.querySelector("#update")){
      document.querySelector("#create").id="update"
      }
      document.querySelector("#update").innerText="Luu";
      var btnUpdate=document.querySelector("#update")
      btnUpdate.onclick=function(){
      var formData={
      name:name.value,
      description:description.value,
      };
      if(name.value != "" && description.value !=""){
      updateCourse(id,formData,function(){
      getCourses(renderCourses);
      document.querySelector("#update").id="create";
      document.querySelector("#create").innerText="Create";
      name.value="";
      description.value="";
      handleCreateForm();
      })
      }
      else{
      alert("Ban hay nhap day du thong tin")
      }
      }
      }

    • @LongHoang-sg5mc
      @LongHoang-sg5mc 2 года назад

      @@thangnguyenchien6986 b còn giữ source code không cho mình xin với ạ

    • @_PhanQuocTrieu
      @_PhanQuocTrieu 2 года назад

      Quên hết rồi bác ạ :V

  • @tiennk439
    @tiennk439 3 года назад

    anh ơi cho em bài học ` ${ } ` với ạ . em xin cảm ơn ạ

    • @nguyenucbao4503
      @nguyenucbao4503 3 года назад

      Đây bạn ruclips.net/video/7Ls-fa8iVXA/видео.html
      Trong phần về js es6 anh sơn có nói về cái này

  • @YunaCrystal3009
    @YunaCrystal3009 Год назад

    ai cho mình xin code phần sửa với

  • @khong2247
    @khong2247 3 года назад +2

    Em làm y hệt vậy nhưng tại sao createCourse(formData); ko cần gọi đến render mà mỗi lần tạo nó vẫn tự động render ạ? E vẫn ko sửa được...
    function createCourse(data, callback) {
    fetch(courseAPI, {
    method: "POST",
    headers: {
    "Content-Type": "application/json",
    },
    body: JSON.stringify(data),
    })
    .then(function (response) {
    return response.json();
    })
    .then(callback);
    }
    function handleCreateForm() {
    var createBtn = document.querySelector("#create");
    createBtn.onclick = function () {
    var name = document.querySelector("input[name='name']").value;
    var desc = document.querySelector("input[name='desc']").value;
    var formData = {
    name: name,
    desc: desc,
    };
    createCourse(formData);
    };
    }

    • @tamthachchi8486
      @tamthachchi8486 3 года назад +8

      do Live Server của VScode. Để thư mục json_server ở một nơi riêng để tránh khi auto save db.json dẫn đến reload cái page đang viết

    • @phongtranquoc7557
      @phongtranquoc7557 2 года назад

      @Huu Hoang Pham bạn có câu trả lời chưa ?

  • @chienphung9633
    @chienphung9633 Год назад

    có ai ko hiểu chỗ callback ko mình giải thích cho

  • @nguyentrung9023
    @nguyentrung9023 3 года назад

    ai giải thích em đoạn ném callback vào với 4.30

    • @canhpham7163
      @canhpham7163 3 года назад +1

      mình cũng không rõ chỗ đấy như thế nào , sao lại cho callback ở đấy xong lại đưa vào trong getCourses(callback). tưởng đoạn 4.30 là funtion(course ){} xong gọi lại callback ở chỗ khác chứ nhỉ ? bạn hiểu đoạn đó chưa, giải thích giúp mình với

    • @igdev6095
      @igdev6095 3 года назад +2

      @@canhpham7163 ở trong hàm start( ) nó gọi hàm getCourses( ) rồi truyền 1 function in ra các khóa học vào cho nó, sau đó thằng ".then(callback)" có tham số là callback nhận đc function kia rồi in ra các khóa học đó b

  • @nguyenngochai0z
    @nguyenngochai0z 3 года назад

    E call api toàn bị lỗi cros

  • @16.nguyenandung8
    @16.nguyenandung8 2 года назад

    có ai có code a ko ạ :v e xin vs

  • @canhpham7163
    @canhpham7163 3 года назад +1

    Ai biết extension gợi ý code cho javascript (onclick = funtion (){} ....) ở phút 12:38 không ạ? chỉ em vs . Thank a

    • @codeiha7487
      @codeiha7487 3 года назад

      tìm mấy cái keywords như: html, js, es6 ... + thêm snippets

  • @nguyenvankhanh3788
    @nguyenvankhanh3788 3 года назад

    ai có code phần này k gửi mình với mình code theo nhưng nó luôn bị call api mỗi khi xóa hoặc tạo mới mặc dù đúng với video

    • @letuananh7586
      @letuananh7586 3 года назад

      Giống mình không hiểu tại sao luôn

    • @letuananh7586
      @letuananh7586 3 года назад

      Bị load lại trang khi xóa hoặc thêm

    • @phongtranquoc7557
      @phongtranquoc7557 2 года назад

      @Hoàng Hà giúp mình với

  • @ucluu2948
    @ucluu2948 4 месяца назад

    Mọi người cho mình hỏi. Tại sao mỗi lần mình điền dữ liệu xong create thì id nó không hiện theo thứ tự mà nó bị hiện lung tung nhỉ

    • @goodboii9020
      @goodboii9020 4 месяца назад

      fix được chưa bạn, mình cũng bị

    • @lona_1421
      @lona_1421 4 месяца назад

      Theo mình nghĩ, Id này là do nó tự tạo ra nên là không theo thứ tự đó kiểu 1 rồi đến 2 đó bạn.

  • @TuanPham-ur8ck
    @TuanPham-ur8ck 6 месяцев назад

    dạ em làm theo anh khi tới method 'POST' thì trang web tự động reload lại và hiện lên tất cả khóa học mà không cần gọi renderCourse() hoặc getCourse(). Có cách nào để fix vấn đề này ạ. Em cảm ơn.