Tôi đang sử dụng jQuery và Ajax cho các biểu mẫu của mình để gửi dữ liệu và tệp nhưng tôi không chắc chắn cách gửi cả dữ liệu và tệp trong một biểu mẫu?
Tôi hiện đang làm gần như giống nhau với cả hai phương thức nhưng cách thức thu thập dữ liệu vào một mảng là khác nhau, dữ liệu sử dụng .serialize();
nhưng các tệp sử dụng= new FormData($(this)[0]);
Có thể kết hợp cả hai phương pháp để có thể tải lên các tệp và dữ liệu dưới một hình thức thông qua Ajax không?
Dữ liệu jQuery, Ajax và html
$("form#data").submit(function(){
var formData = $(this).serialize();
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="data" method="post">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<button>Submit</button>
</form>
Tập tin jQuery, Ajax và html
$("form#files").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="files" method="post" enctype="multipart/form-data">
<input name="image" type="file" />
<button>Submit</button>
</form>
Làm cách nào tôi có thể kết hợp những điều trên để tôi có thể gửi dữ liệu và tệp ở một dạng thông qua Ajax?
Mục tiêu của tôi là có thể gửi tất cả các biểu mẫu này trong một bài đăng với Ajax, điều đó có thể không?
<form id="datafiles" method="post" enctype="multipart/form-data">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<input name="image" type="file" />
<button>Submit</button>
</form>
FormData
FormData
tiếp cận sẽ hoạt động tốt với các biểu mẫu có chứa bất cứ điều gì bạn muốn, không chỉ các trường tải lên tệp; nó không được hỗ trợ rộng rãi