jQuery and Ajax is used to upload file from HTML form to server without form submission
สมมติว่า ฟอร์ม HTML เป็นตามด้านล่าง
Assume that HTML form is below
<form id="form-id" action="upload.php" enctype="multipart/form-data" method="post"> <table style="width: 100%;"> <tbody> <tr> <th><label for="id_path_program">Path program:</label></th> <td><input id="id_path_program" name="path_program" type="file"></td> </tr> <tr> <th><label for="id_description">Description:</label></th> <td><input id="id_description" maxlength="250" name="description" type="text"></td> </tr> </tbody> </table> <input type="submit" value="Upload"/> </form>
หมายเหตุ: id ของฟอร์มถูกตั้งค่าเป็น form-id และ action ของฟอร์มเป็น upload.php
Notice: id of form is set to form-id and action of form is upload.phpเพื่อที่จะอัพโหลดไฟล์และข้อมูลที่กรอกภายในฟอร์ม ใช้สริปต์ตามด้านล่าง
To upload file with form data, use java script below
$('#form-id').submit(function(){ $.ajax({ url: $(this).attr('action'), type: 'POST', data: new FormData($(this)[0]), dataType : 'json', contentType: false, processData: false, success : function(data){ console.log(data) } }); return false; });
บรรทัดที่ 1, เลือกฟอร์มที่มี id เป็น form-id แล้วตั้งค่า event handler สำหรับการส่งค่าของฟอร์ม
On line 1, select a form which id is equal to form-id then set event handler for form submitting
บรรทัดที่ 3, ตั้งค่า URL ที่จะส่งค่าไป โดยอ่านค่าจากแอตทริบิวต์ action ของฟอร์มที่ถูกเลือก
บรรทัดที่ 3, ตั้งค่า URL ที่จะส่งค่าไป โดยอ่านค่าจากแอตทริบิวต์ action ของฟอร์มที่ถูกเลือก
On line 3, set URL, which send data to, by getting value of attribute named action of selected form
บรรทัดที่ 4, ตั้งค่าประเภทการส่งข้อมูล
บรรทัดที่ 4, ตั้งค่าประเภทการส่งข้อมูล
On line 4, set type of sending data
บรรทัดที่ 5, ตั้งค่าข้อมูลที่จะส่ง โดยอ่านค่าข้อมูลของฟอร์มที่ถูกเลือก
บรรทัดที่ 5, ตั้งค่าข้อมูลที่จะส่ง โดยอ่านค่าข้อมูลของฟอร์มที่ถูกเลือก
On line 5, set data, which will be send, by getting form data of selected form
บรรทัดที่ 6, ตั้งค่าประเภทข้อมูลที่จะรับจากเซิร์ฟเวอร์
บรรทัดที่ 6, ตั้งค่าประเภทข้อมูลที่จะรับจากเซิร์ฟเวอร์
On line 6, set expected return type from server
บรรทัดที่ 7-8, ตั้งค่าทั้ง contentType และ processData เป็น false
บรรทัดที่ 7-8, ตั้งค่าทั้ง contentType และ processData เป็น false
On line 7-8, set both contentType and processData value to false
บรรทัดที่ 9-11, ตั้งค่าฟังก์ชั่นเรียกกลับสำหรับรับค่าจากเซิร์ฟเวอร์ เมื่อส่งข้อมูลไปเซิร์ฟเวอร์สำเร็จ
บรรทัดที่ 9-11, ตั้งค่าฟังก์ชั่นเรียกกลับสำหรับรับค่าจากเซิร์ฟเวอร์ เมื่อส่งข้อมูลไปเซิร์ฟเวอร์สำเร็จ
On line 9-11, set callback function for receiving data from server when sending data to server successfully
บรรทัดที่ 13, คืนค่า false เพื่อยกเลิกการส่งค่าจากฟอร์ม
บรรทัดที่ 13, คืนค่า false เพื่อยกเลิกการส่งค่าจากฟอร์ม
On line 13, return false to cancel form submission
ข้อสำคัญ: ห้ามลบ contentType และ processData ออก
Importance: contentType and processData must not be removed
หมายเหตุ: ก่อนการใช้ $.ajax ผมลองใช้ $.post แต่ไม่สามารถส่ง FILES ไปยังเซิร์ฟเวอร์ได้
Notice: Before using $.ajax, I try to use $.post but FILES cannot be send to server
No comments:
Post a Comment