WordPress为什么要向Ajax响应添加0(零)?


16

除非我用exit()或结束Ajax处理功能,否则die()Ajax函数将接收所需且正确的输出,但后跟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中阅读了Plugins,但是为什么这样做是必要的?


即使您退出了wordpress,它(加0)也会发生吗?
Murdaugh

是的,即使我没有登录WordPress。
Radek

Answers:


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'Apr 28'18

@thrillcode,除非您需要将的过程公开wp_die给其他可以挂接到该过程的插件或主题代码,然后使用dieexit可以。如果您打算以OSS或其他方式发布您的代码,而您的代码需要与他人保持良好的配合,那wp_die将是更好的选择。
亚当
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.