สำหรับผู้ที่มองหาแนวทางที่ทันสมัยกว่าคุณสามารถใช้ไฟล์fetch API
. ตัวอย่างต่อไปนี้แสดงวิธีดาวน์โหลดไฟล์สเปรดชีต ทำได้อย่างง่ายดายด้วยรหัสต่อไปนี้
fetch(url, {
body: JSON.stringify(data),
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
})
.then(response => response.blob())
.then(response => {
const blob = new Blob([response], {type: 'application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = downloadUrl;
a.download = "file.xlsx";
document.body.appendChild(a);
a.click();
})
ฉันเชื่อว่าแนวทางนี้จะเข้าใจง่ายกว่าXMLHttpRequest
วิธีแก้ปัญหาอื่น ๆ นอกจากนี้ยังมีไวยากรณ์ที่คล้ายกันกับjQuery
แนวทางนี้โดยไม่จำเป็นต้องเพิ่มไลบรารีเพิ่มเติมใด ๆ
แน่นอนฉันขอแนะนำให้ตรวจสอบว่าคุณกำลังพัฒนาเบราว์เซอร์ใดเนื่องจากวิธีการใหม่นี้ใช้ไม่ได้กับ IE คุณสามารถค้นหารายการความเข้ากันได้เบราว์เซอร์เต็มรูปแบบต่อไปนี้การเชื่อมโยง
สำคัญ : ในตัวอย่างนี้ฉันกำลังส่งคำขอ JSON ไปยังเซิร์ฟเวอร์ที่รับฟังไฟล์url
. นี้url
จะต้องมีการตั้งค่าในตัวอย่างของฉันฉันสมมติว่าคุณรู้ว่าส่วนนี้ นอกจากนี้ให้พิจารณาส่วนหัวที่จำเป็นสำหรับคำขอของคุณในการทำงาน เนื่องจากฉันกำลังส่ง JSON ฉันต้องเพิ่มContent-Type
ส่วนหัวและตั้งค่าapplication/json; charset=utf-8
เป็นเพื่อให้เซิร์ฟเวอร์ทราบประเภทของคำขอที่จะได้รับ