ทำไม WordPress เพิ่ม 0 (ศูนย์) ลงในการตอบกลับ Ajax


16

ถ้าฉันจบฟังก์ชั่นการประมวลผลโดยอาแจ็กซ์exit()หรือdie()ฟังก์ชั่นได้รับอาแจ็กซ์ที่ต้องการและการส่งออกที่ถูกต้อง 0แต่ต่อไปนี้โดย

ความคิดใดที่เกิดขึ้น

นั่นหมายความว่าเป็นแบบนั้นหรืออาจแก้ไขได้?

add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');

function get_homepage(){
    echo "get_homepage ->";
    exit();
}

ฉันเคยอ่านที่AJAX ในโปรแกรมเสริมแต่ทำไมถึงจำเป็น?


เกิดขึ้น (การเพิ่ม 0) แม้ว่าคุณจะออกจากระบบของ wordpress หรือไม่?
murdaugh

ใช่แม้ว่าฉันจะไม่ได้ลงชื่อเข้าใช้ WordPress
Radek

คำตอบ:


31

การตอบสนองเริ่มต้นจากadmin-ajax.phpคือ

die( '0' );

... ด้วยการเพิ่มของคุณเองwp_die()หรือexit()หรือdie()หลังจากส่งคืนเนื้อหาที่คุณต้องการจะป้องกันการตอบadmin-ajax.phpกลับที่เป็นค่าเริ่มต้นเช่นกัน

นอกจากนี้ยังหมายถึงการโทร ajax ของคุณสำเร็จ

ในที่สุดเมื่อต้องการตอบคำถามของคุณมันก็ต้องใช้วิธีนี้ สิ่งที่คุณทำโดยออกจากการคืนเนื้อหาเป็นสิ่งที่ถูกต้อง


ขอบคุณสำหรับคำอธิบาย ดังนั้นฉันจะใช้ die () หรือตรวจสอบภายใน ajax เป็นเวลา 0 เพื่อที่จะรู้ว่าทุกอย่างโอเคไหม
Radek

2
ใช้die()หรือexit()หลังจากคุณสะท้อนเนื้อหา / ข้อมูลของคุณ ในsuccess/completeฟังก์ชันเรียกกลับของวิธี ajax ของคุณคุณสามารถจัดการข้อมูลและใช้เพื่อเติมข้อมูล DOM คุณยังสามารถทำการตรวจสอบข้อผิดพลาดเพิ่มเติมเพื่อตรวจสอบความถูกต้องของข้อมูล คุณสามารถตรวจสอบข้อผิดพลาดในฟังก์ชั่นการโทรกลับ PHP ของคุณก่อนที่จะส่งออก การออกจากระบบเป็นหลักหลังจากกลับมาตอบสนองของคุณจะช่วยให้แน่ใจว่าคุณจะไม่ได้รับ0พร้อมกับมัน โดยวิธีเพียงเพราะคุณได้รับการ0ตอบสนองไม่ได้หมายความว่าการโทร ajax ของคุณประสบความสำเร็จ 100% อย่างไรก็ตามมันง่ายที่จะบอกเมื่อคุณตรวจสอบผลลัพธ์ของคุณ
อดัม

1
คุณควรจะใช้wp_die()เพิ่มใน 2.0.4
thrillcode

@thrillcode เว้นแต่คุณจำเป็นต้องเปิดเผยกระบวนการของwp_dieปลั๊กอินหรือรหัสธีมอื่น ๆ ที่สามารถขอเข้าสู่กระบวนการดังกล่าวจากนั้นใช้dieหรือexitไม่เป็นไร หากคุณตั้งใจจะปล่อยรหัสของคุณเป็น OSS หรืออื่น ๆ ที่รหัสของคุณต้องการเล่นกับผู้อื่นwp_dieได้ดีกว่าจะเห็นด้วยมากกว่า
อดัม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.