好的,我从wordpress主题中的一些AJAX内容开始
1) 我正在根据主题框架构建一个儿童主题2)我的儿童主题有一个标题。php,索引。php,函数。php和样式。css(现阶段)
在我的标题中。php我有以下内容(顺便说一句:代码改编自http://codex.wordpress.org/AJAX_in_Plugins):
<?php
if( !is_admin() ) {
add_action(\'wp_ajax_my_special_action\', \'my_action_callback\');
add_action(\'wp_ajax_nopriv_my_special_action\', \'my_action_callback\');
$_ajax = admin_url(\'admin-ajax.php\');
}
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: \'my_special_action\',
whatever: 1234
};
jQuery.post(\'<?php echo($_ajax); ?>\', data, function(response) {
jQuery(\'#output\').html(\'Got this from the server: \' + response);
});
});
</script>
</head>
好了,这很酷-它会用“从服务器获得:0”更新页面上的输出div
我需要一个名为“my\\u action\\u callback”的PHP函数,所以在我的主题函数中。php我有以下内容:
function my_action_callback() {
$whatever = $_POST[\'whatever\'];
$whatever += 10;
echo \'whatever now equals: \' . $whatever;
die();
}
这是我的函数中唯一的函数。php
为了确保PHP函数正常工作,我将我的\\u action\\u callback()粘贴到索引中。php-它会按预期输出“whatever now等于:10”。
然而,AJAX响应总是“从服务器得到这个:0”AJAX似乎从未从PHP函数得到响应。
我尝试添加。ajaxError()查看是否有任何错误-没有。
我尝试将PHP函数添加到我的另一个插件中-nope。
我错过了什么,jQuery没有为我做ajax呢?
提前感谢
最合适的回答,由SO网友:John P Bloch 整理而成
放那些add_action
您的functions.php
文件也是。如果他们在header.php
, WordPress从不注册它们,因为AJAX中没有加载标题。还有,你不需要这个is_admin()
检查主题的标题永远不会加载到admin中。因此,函数文件应如下所示:
add_action(\'wp_ajax_my_special_action\', \'my_action_callback\');
add_action(\'wp_ajax_nopriv_my_special_action\', \'my_action_callback\');
function my_action_callback() {
$whatever = $_POST[\'whatever\'];
$whatever += 10;
echo \'whatever now equals: \' . $whatever;
die();
}
主题头文件的这一部分的开头应该如下所示:
<?php
$_ajax = admin_url(\'admin-ajax.php\');
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
除此之外,您的代码看起来很好!