除非我通过exit()die()结束Ajax处理功能,否则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的“插件”中阅读了,但是为什么有必要这样做?

评论

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

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

#1 楼

来自admin-ajax.php的默认响应是

die( '0' );

wp_die()或exit()die(),可以防止来自admin-ajax.php的默认响应返回好。

这通常也意味着您的ajax调用已成功。

最终,要回答您的问题,它就是以这种方式工作的。返回内容后退出是您的正确选择。

评论


谢谢你的解释。那么我该使用die()还是在ajax内检查0以了解一切正常?

–拉德克
13年5月5日,1:12

回显内容/数据后,请使用die()或exit()。然后,在ajax方法的成功/完成回调函数中,您可以操纵数据并将其用于填充DOM。您还可以执行任何其他错误检查以验证数据完整性。您还可以在输出之前在PHP回调函数中进行错误检查。从本质上讲,返回响应后退出将确保您不会同时获得0。顺便说一句,仅仅因为您收到0响应并不意味着您的Ajax调用是100%成功的。但是,当您检查输出时很容易分辨。

–亚当
13-10-5在1:26

您应该使用2.0.4中添加的wp_die()

–验证码
18年4月28日在4:31

@thrillcode,除非您需要将wp_die的进程公开给其他可以挂接到该进程的插件或主题代码,然后使用die或exit即可。如果您打算以OSS或其他方式发布您的代码,而您的代码需要与他人一起玩,那么wp_die会更可取。

–亚当
18年4月29日在8:12