บทความนี้วิเคราะห์วิธีแก้ปัญหาที่ไม่สามารถรับข้อมูลได้เมื่อส่ง Ajaxform แบ่งปันสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
ก่อนที่จะใช้ ajaxform ฉันได้แสดงความคิดเห็นเล็ก ๆ แบบฟอร์มเว็บการส่งความคิดเห็นและเนื้อหาความคิดเห็นถูกใช้สำหรับการแก้ไขข้อความ เพื่อเพิ่มประสบการณ์ผู้ใช้เล็กน้อยฉันจะใช้ Ajaxform เพื่อใช้การส่ง Ajax แต่ฉันพบสิ่งที่ไม่คาดคิดเกิดขึ้น มันคือทุกครั้งที่คุณส่ง Ajaxform จะไม่สามารถรับเนื้อหาความคิดเห็นที่แก้ไขได้ในปัจจุบันนั่นคือเนื้อหาใน Textarea คุณต้องคลิกส่งอีกครั้งเพื่อส่งเนื้อหาของ Textarea
ประเด็นก็คือเนื้อหาใน tinymce ไม่ได้รับการอัปเดตเป็น textarea ก่อนส่ง ดังนั้นฉันต้องการดูว่า Ajaxform มีเหตุการณ์ที่มีผลผูกพันก่อนส่งหรือไม่ ฉันพบว่าในเหตุการณ์ beforesubmit เนื้อหาของ formdata ได้รับการเติมเต็ม แม้ว่าฉันจะสามารถเติมเนื้อหาฟิวชั่นในปัจจุบันได้ที่นี่ แต่ฉันก็รู้สึกว่ามันไม่สวยมาก
เพื่อตรวจสอบว่ามีวิธีอื่นในการแก้ปัญหานี้หรือไม่ฉันได้ตรวจสอบซอร์สโค้ดของ Ajaxform และพบว่าผู้เขียน Ajaxform ได้เสนอวิธีแก้ปัญหาแบบครบวงจรให้กับปัญหานี้ ซอร์สโค้ดเฉพาะมีดังนี้:
1. รหัส JS มีดังนี้:
การคัดลอกรหัสมีดังนี้: // hook สำหรับการจัดการข้อมูลแบบฟอร์มก่อนที่จะสกัด
// สะดวกสำหรับใช้กับบรรณาธิการที่หลากหลายเช่น Tinymce หรือ FCKEditor
var veto = {};
this.trigger ('form-pre-serialize', [สิ่งนี้, ตัวเลือก, ยับยั้ง]);
if (veto.veto) {
log ('Ajaxsubmit: ส่งการคัดค้านผ่าน Trigger Form-Pre-Serialize');
คืนสิ่งนี้;
-
2. สอดคล้องกับ fckeditor คล้ายกัน:
คัดลอกรหัสดังนี้: // bind form โดยใช้ 'ajaxform'
$ ('#commentForm'). ajaxform (ตัวเลือก);
// ผูกเหตุการณ์แบบฟอร์ม-พรีเมชชันและบันทึกข้อมูล tinymce ลงใน textarea ก่อนที่จะเรียกเหตุการณ์แบบฟอร์มซิลิเมอร์
$ ('#commentForm'). bind ('form-pre-serialize', ฟังก์ชั่น (เหตุการณ์, แบบฟอร์ม, ตัวเลือก, ยับยั้ง) {
tinymce.triggersave ();
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน