【发布时间】:2013-05-27 16:47:36
【问题描述】:
我在网站前端用 js 发出 ajax 请求:
jQuery.post( ajaxurl, {
action: 'test',
method: 'magic'
},
function(response){});
请求已发送。在它的回复中,我看到了当前页面 (html) 的全部内容,但它应该只是 ok 或 error。
经过我理解的一些测试,注册的 ajax 操作从未触发:
add_action('wp_ajax_test', 'test_ajax');
function test_ajax(){
// during ajax I'm not here
die('test');
}
请求由登录用户完成,因此不需要 wp_ajax_nopriv。
我打开了 admin-ajax.php 文件并尝试调试它。一切都很好(我看到了我正在发送的发布请求),直到我到达第 41 行(对于 WP 3.5.1):
do_action( 'admin_init' );
在这一行之后代码没有被执行。
在 WordPress 管理区域中,相同的插件也确实发送了一些 ajax 请求 - 它们可以工作。如上所述,这些 ajax 处理程序位于同一个文件中。
我不知道为什么会这样。有什么帮助吗?
【问题讨论】:
-
发现问题 - 难以理解 init 和 bp_init 操作。进行了一些代码重构 - 现在它可以正常工作了。