ฉันใช้ jQuery และ Ajax สำหรับฟอร์มของฉันในการส่งข้อมูลและไฟล์ แต่ฉันไม่แน่ใจว่าจะส่งทั้งข้อมูลและไฟล์ในรูปแบบเดียวได้อย่างไร
ขณะนี้ฉันทำเกือบเหมือนกันทั้งสองวิธี แต่วิธีการรวบรวมข้อมูลในอาเรย์นั้นแตกต่างกันข้อมูลที่ใช้.serialize();
แต่ไฟล์ใช้= new FormData($(this)[0]);
เป็นไปได้หรือไม่ที่จะรวมทั้งสองวิธีเพื่อให้สามารถอัพโหลดไฟล์และข้อมูลในรูปแบบเดียวผ่าน Ajax ได้?
Data jQuery, Ajax และ 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>
ไฟล์ jQuery, Ajax และ 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>
ฉันจะรวมข้างต้นเพื่อให้สามารถส่งข้อมูลและไฟล์ในรูปแบบเดียวผ่าน Ajax ได้อย่างไร
เป้าหมายของฉันคือการส่งแบบฟอร์มทั้งหมดนี้ในโพสต์เดียวกับ Ajax เป็นไปได้หรือไม่
<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
วิธีการควรปรับการทำงานที่มีรูปแบบที่มีสิ่งที่คุณต้องการไม่ได้เป็นเพียงเขตการอัปโหลดไฟล์; ไม่รองรับอย่างกว้างขวางว่า