Asked May 19th, 2:05 PM 104 0 2
  • 104 0 2
0

Ajax trong laravel

Share
  • 104 0 2

Chào mọi người,em đang học ajax curd trong laravel,thì nếu insert 1 recod có title và imges,em có thêm Form data,còn edit thì sử lý như nào ạ ,em xin cảm ơn,ai có ví dự cho em tham khảo ạ

2 ANSWERS


Answered May 19th, 2:31 PM
0

Đang không rõ bạn làm create với ajax như thế nào rồi nhưng về cơ bản làm edit/update thì cũng tương tự vậy thôi. Sẽ tốt hơn nếu bạn có code phần đã làm insert, như vậy dễ giải thích cho bạn hiểu hơn.

Share
May 19th, 2:36 PM

('#form-add').submit(function(e){ e.preventDefault(); //bắt sự kiện nút submit để hoãn sự kiện var url=(this).attr('data-url'); //viết ajax $.ajax({ type: 'post', //check bằng route:list , url : url, //là data-url đặt ở mỗi nut add,edit,delete(đường dẫn) data :new FormData(this), dataType: 'json', //kiểu dữ liệu trả veef response ở controller contentType: false, cache :false, processData: false, success:function(response){ toastr.success('them thanh cong') $('#modal-add').modal('hide'); setTimeout(function(){ window.location.href="{{route('index.author')}}"; },500); } });

    });

đây là code mk isert vào ạ thì có name,images,và birthday,

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 19th, 2:42 PM

@khanh1234 việc sử dụng ajax cho update thì cũng không khác gì cả, nếu đang làm như này chỉ cần trên code update server check xem khi update có update ảnh ko, nếu có thì code như phần insert, còn nếu không có ảnh đc gửi lên thì update những trường khác trừ image ra.

0
| Reply
Share
May 19th, 2:47 PM

@le.vinh.thien vâng mình đang vướng chỗ ,click edit hiện thông tin thì sẽ show các thông tin theo id,thường thì sẽ .val(),div để hiện images sử lý thế nào ạ,mình mới làm quen ajax nên cx chưa thành thạo lắm ạ

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 19th, 2:54 PM

@khanh1234 có nhiều cách nhưng với cách bạn đang hỏi thì trong trường này bạn phải có 2 quá trình

  1. Click edit A => ajax để lấy thông tin A -> edit DOM để giá trị A chui vào form edit (chắc là trong modal).

     -> phải có api để lấy dữ liệu cái A theo id(or theo 1 identifier bạn quy định), dữ liệu trả về có thể json/html tuỳ bạn
    
  2. Khi edit xong thì bấm nút lưu -> dùng ajax để call api update, cách làm gần giống create

0
| Reply
Share
May 19th, 2:56 PM

@le.vinh.thien data: { hoten: $('#hoten-edit').val(), gioitinh: $('#gioitinh-edit').val(), ngaysinh: $('#ngaysinh-edit').val(), sdt: $('#sdt-edit').val(), diachi: $('#diachi-edit').val(), }, nếu mk lấy thông của 1 record có những trường dữ liệu này thì có images có .val() được k ạ hay html

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 19th, 3:01 PM

@khanh1234 đối với image ko thể dùng .val() được.

Cái này bạn có thể trực tiếp thử mà nhỉ

0
| Reply
Share
May 19th, 3:17 PM

@le.vinh.thien vâng nếu em muốn hiển thị dữ liệu có title,images thì trong data:{ sử lý như nào ạ } và update cx thế

0
| Reply
Share
May 19th, 3:17 PM

@le.vinh.thien images thì dùng .html à bạn

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 20th, 1:23 AM

@khanh1234 sẽ sử dụng đoạn như dưới

var fd = new FormData();
var files = $('#file')[0].files[0];
fd.append('file',files);

tham khảo thêm: https://makitweb.com/how-to-upload-image-file-using-ajax-and-jquery/

0
| Reply
Share
May 20th, 3:02 AM

@le.vinh.thien upload ảnh thì mk làm được rồi ạ,mình đang bị lỗi edit 1 record, Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 20th, 4:55 AM

@khanh1234 bạn đừng truyền new FormData(this), làm đúng như đoạn mình bảo:

var fd = new FormData(); // đừng truyền gì vào contructor của nó 
fd.append('field', value) // ví dụ vậy
0
| Reply
Share
May 20th, 7:03 AM

@le.vinh.thien vâng thế nếu mk khai báo như thế này thì , data: fd, có truyền được cả text k ,ví dụ mk sửa thì có trường titile nx ạ

0
| Reply
Share
Lê Vĩnh Thiện @le.vinh.thien
May 20th, 8:46 AM

@khanh1234 tất nhiên có rồi, bạn cứ append data vào trong FormData thôi.

p/s: bạn làm gì thì nên hiểu nguồn gốc, ví dụ mình thấy bạn có dùng FormData nhưng bạn còn chưa hiểu tại sao cần nó, nó gồm những gì và sử dụng ra sao.

0
| Reply
Share
Answered May 20th, 12:34 AM
0

Bạn làm create như nào thì edit cũng tương tự như vậy. Vẫn tiếp tục dùng FormData để gói dữ liệu gửi lên server. Chỉ khác là lúc render các trường trong form thì bạn gán value đã tồn tại (sau khi create) cho nó qua thuộc tính value. Nếu render form bằng laravel thì truyền value như này:

Form::email($name, $value = $user->email, $attributes = array());
Share
May 20th, 12:52 AM

ý mk là khi click button edit thì hiện modal ,làm sao để đổ dữ liệu của ảnh ạ,thường thì text sẽ là ('#name-edit').val(), còn images thì sẽ k sử dụng được val

0
| Reply
Share
May 20th, 1:02 AM

@khanh1234 Chính vì thế nên chẳng ai đổ dữ liệu ảnh ra mục value của input file đâu bạn mà sẽ có một thẻ img để hiển thị ảnh hiện tại. Chỗ chọn ảnh luôn là chọn ảnh mới và upload lại file mới lên server.

Trên controller, nếu cái request update mà thấy có file ảnh được upload lên thì bạn sẽ xử lý lưu ảnh giống như bạn làm trong mục create. 😃

0
| Reply
Share
May 20th, 1:39 AM

@huukimit vâng, em định cho 1 cái img để hiện ảnh hiện tại nhưng chưa biết viết thế nào trong ajax để hiện,bt sử lý sẽ là thư mục lưu ảnh và id

0
| Reply
Share
May 20th, 1:51 AM

@khanh1234 Trong controller bạn query data đã tạo ở phần create ra theo id. Sau đó thì lấy link ảnh từ data rồi render blade view thì thực hiện render thêm thẻ img. Nếu không dùng blade view thì sau khi trang load thành công, bạn cần ajax lên để lấy data rồi add lại link cho thẻ img.

0
| Reply
Share
May 20th, 3:02 AM

@huukimit Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement' em update record ,bị dính lỗi này ạ

0
| Reply
Share