关于jQuery部分:
除了我们无法知道您最终指向哪个URL之外,一切看起来都正常。通过在Chrome或Safari中使用Firebug或WebKit的开发工具,并相应地编辑代码,您可以看到URL、发送的标题和服务器的响应。
由于我经常使用AJAX,我发现在我的header.php
:
<?php if(!is_admin()) : ?>
<script type="text/javascript">
//<![CDATA[
ajaxurl = \'<?php echo(admin_url(\'admin-ajax.php\')); ?>\';
//]]>
</script>
<?php endif; ?>
这样,我就有了一个全球
ajaxurl
Javascript变量,该变量将始终指向正确的AJAX url。
但我敢打赌,问题在于PHP部分。您缺少将PHP函数注册为WordPress AJAX操作的行。没有它们,WordPress永远猜不到ajax()函数实际上是一个ajax函数。
把这个放在你的functions.php
:
add_action(\'wp_ajax_nopriv_my_custom_callback\', \'my_custom_callback\');
add_action(\'wp_ajax_my_custom_callback\', \'my_custom_callback\');
这里的逻辑是WordPress将检查
action
内部时的参数
admin-ajax.php
, 并触发动作
wp_ajax_{action}
, 这反过来又与回调相关联
my_custom_callback
. 第一行(带有
nopriv
位)是可选的,只有当您想向未登录的用户提供AJAX功能时,才应该使用它。
在你的具体情况下(尽管我strongly 推荐比ajax
作为函数名),它将如下所示:
add_action(\'wp_ajax_nopriv_ajax\', \'ajax\');
add_action(\'wp_ajax_ajax\', \'ajax\');
告诉我进展如何,好吗?