Tại sao WordPress thêm 0 (không) vào phản hồi Ajax?


16

Trừ khi tôi kết thúc hàm xử lý Ajax bằng exit()hoặc die(), hàm Ajax nhận đầu ra mong muốn và đúng nhưng theo sau 0.

Bất cứ ý tưởng tại sao điều đó xảy ra?

Điều đó có nghĩa là như thế hay nó có thể được sửa chữa?

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

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

Tôi đã đọc tại AJAX trong Plugin , nhưng tại sao điều đó lại cần thiết?


Có (việc thêm 0) xảy ra ngay cả khi bạn đã đăng xuất khỏi wordpress không?
murdaugh

Có, ngay cả khi tôi không đăng nhập vào WordPress.
Radek

Câu trả lời:


31

Phản hồi mặc định từ admin-ajax.phplà,

die( '0' );

... bằng cách thêm của riêng bạn wp_die()hoặc exit()hoặc die()sau khi trở về mong muốn ngăn chặn nội dung của bạn phản ứng mặc định từ admin-ajax.phpđược trả lại là tốt.

Nó cũng thường có nghĩa là cuộc gọi ajax của bạn đã thành công.

Cuối cùng, để trả lời câu hỏi của bạn, nó có nghĩa là làm việc theo cách này. Những gì bạn đang làm bằng cách thoát ra sau khi trả lại nội dung của bạn là điều nên làm.


Cám ơn vì đã giải thích. Vì vậy, tôi sử dụng die () hoặc tôi kiểm tra bên trong ajax cho 0 để biết rằng mọi thứ đều ổn?
Radek

2
Sử dụng die()hoặc exit()sau khi bạn lặp lại nội dung / dữ liệu của bạn. Trong success/completehàm gọi lại của phương thức ajax của bạn, sau đó bạn có thể thao tác dữ liệu và sử dụng nó để điền vào DOM. Bạn cũng có thể thực hiện bất kỳ kiểm tra lỗi bổ sung để xác thực tính toàn vẹn dữ liệu. Bạn cũng có thể kiểm tra lỗi trong chức năng gọi lại PHP trước khi xuất. Về cơ bản thoát ra sau khi trả lời phản hồi của bạn sẽ đảm bảo bạn cũng không đồng ý 0với nó. Nhân tiện, chỉ vì bạn nhận được 0phản hồi không có nghĩa là cuộc gọi ajax của bạn đã thành công 100%. Tuy nhiên, thật dễ dàng để biết khi bạn kiểm tra đầu ra của bạn.
Adam

1
Bạn nên sử dụng wp_die()được thêm vào 2.0.4
thrillcode

@thrillcode trừ khi bạn cần đưa ra quy trình wp_diecho các plugin hoặc mã chủ đề khác có thể nối vào quy trình đã nói, sau đó, sử dụng diehoặc exitlà ok. Nếu bạn có ý định phát hành mã của mình dưới dạng OSS hoặc nếu không, nơi mã của bạn cần chơi đẹp với người khác, thì wp_diesẽ được ưu tiên hơn, đồng ý.
Adam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.