- vừa được xem lúc

Upload file ajax với FormData

0 0 25

Người đăng: anchan

Theo Viblo Asia

1. FormData là gì

FormData là một interface mới được HTML5 giới thiệu trong Web API.

Hầu hết chúng ta đã từng chặn hoặc chỉnh sửa dữ liệu khi submit form với Jquery . FormData là một Web API interface, cung cấp cho ta một cách tiếp cận khác với việc xử lý form. Việc sử dụng FormData cũng giống với việc xử dụng ajax jquery.

2. Cách sử dụng form Data

2.1. .append()

Chèn thêm cặp key-value vào form data. Giống với việc ta chèn input hidden_field vào form thông thường.

var formData = new FormData(); // Currently empty
formData.append('username', 'Chris');
formData.append('userpic', myFileInput.files[0], 'chris.jpg');

2.2 .delete()

Xóa cặp key-value trong FormData Object

var formData = new FormData(); // Currently empty
formData.append('username', 'Chris');
formData.append('userpic', myFileInput.files[0], 'chris.jpg');

2.3 Loop qua các key-value với entries

Chúng ta có thể loop qua các key-value của FormData với entries

// Create a test FormData object
var formData = new FormData();
formData.append('key1', 'value1');
formData.append('key2', 'value2'); // Display the key/value pairs
for(var pair of formData.entries()) { console.log(pair[0]+ ', '+ pair[1]);
} // Result
key1, value1
key2, value2

2.4 .get()

Get giá trị đầu tiên của formdata tương ứng với key

var formData = new FormData();
formData.append('username', 'Chris');
formData.append('username', 'Bob');
formData.get('username'); // Returns "Chris"

2.5 .getAll()

Trả về tất cả các giá trị của formdata tương ứng với key

var formData = new FormData();
formData.append('username', 'Chris');
formData.append('username', 'Bob');
formData.getAll('username'); // Returns ["Chris", "Bob"]

2.6 .set()

Gán giá trị cho một key tương ứng

var formData = new FormData(); // Currently empty
formData.set('username', 'Chris');
formData.set('userpic', myFileInput.files[0], 'chris.jpg');
formData.set('name', 72);
formData.get('name'); // "72"

3. Upload file với ajax formData

Mặc định thì file field khi submit form sẽ không được add vào ajax nếu ta submit như thông thường. Khi submit thì fields[type="file"] sẽ bị missing

var form = $('form');
$.ajax({ url: path, method: 'POST', data : form.serialize()
}) 

Với formData

var formData = new FormData($('form')[0]); $.ajax({ ... processData: false, contentType: false, data: formData ...
}); 

mặc định Ajax sẽ để option processData là true, tự động convert data về string, và set content-type là "application/x-www-form-urlencoded". False sẽ skip quá trình này và set mặc định của form

ContentType: false cũng skip việc set contentType mặc định của ajax là "application/x-www-form-urlencoded".

4. Upload file với iframe

Còn 1 cách khác để upload file là sử dung iframe

 <iframe id="uploadTrg" name="uploadTrg" height="0" width="0" frameborder="0" scrolling="yes"></iframe> <form id="myForm" action="http://example.com/file-upload-service" method="post" enctype="multipart/form-data" target="uploadTrg"> File: <input type="file" name="file"> <input type="submit" value="Submit" id="submitBtn"/> </form> <div id="ajaxResultTest"></div>
$("iframe").load(function(){ alert("The file is uploaded");
});

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số ví dụ sử dụng Ajax

1. Định nghĩa về ajax. AJAX viết tắt từ Asynchronous JavaScript and XML (JavaScript và XML không đồng bộ). .

0 0 45

- vừa được xem lúc

Tìm hiểu về FormData

1. Bài toán đặt ra. bạn sẽ thường phải chặn việc submit form và sử dụng ajax để xử lý dữ liệu form gửi lên. Bài toán 1:.

0 0 25

- vừa được xem lúc

Cùng xây dựng app Ajax đơn giản trong Rails

Chúng ta cùng thử viết một Web app đơn giản có sử dụng Ajax bằng Ruby on Rails nhé! . Trong bài viết mình sẽ nói thẳng vào cách xây dựng ajax luôn nên nếu các bạn chưa nắm được cách viết 1 app CRUD bằ

0 0 27

- vừa được xem lúc

Tính năng Giỏ Hàng trong Rails

Ở bài viết này mình sẽ tóm tắt cách dùng Ruby on Rails và Ajax để tạo 1 app có chức năng "thêm vào giỏ hàng" như các shop online. ! .

0 0 39