Update: 我设法让AJAX工作,但没有在click事件中。我更新了问题以匹配此。
我正在尝试在页面上找到的一些代码:\'AJAX in Plugins\'.
然而,我不能让它工作,我真的不知道从哪里开始寻找。当我删除click函数并在pageload上运行代码时,它就可以工作了。
我有一个Javascript文件,看起来像这样:
jQuery(document).ready(function(){
jQuery("#createremotesafe").click(function(){
alert (\'test\');
var data = {
action: \'my_action\',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.post(ajaxurl, data, function(response) {
alert(\'Got this from the server: \' + response);
});
});
});
在我的PHP脚本中的某个地方,生成了应该执行Javascript的按钮(即管理页面),以及页面的其余部分:
add_action(\'wp_ajax_my_action\', \'my_action_callback\');
echo \'test2\';
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = $_POST[\'whatever\'];
$whatever += 10;
echo $whatever;
die(); // this is required to return a proper result
}
我得到了
Alert (\'test\')
以及
echo \'test2\'
, 但不是响应警报。没有Javascript错误或任何东西。我的代码肯定正在运行,因为我可以看到这两个测试,但为什么AJAX没有得到任何响应?页面加载后,我的php函数会消失吗?也许我不能/不应该使用内置的wp-AJAX函数?
它也不会显示一个空的警报框,只是什么都没有发生。
最合适的回答,由SO网友:t31os 整理而成
从工作代码库开始。。
add_action(\'in_admin_header\', \'my_ajax_button\');
function my_ajax_button() {
echo \'<a href="#ajaxthing" class="myajax">Test</a>\';
}
add_action(\'admin_head\', \'my_action_javascript\');
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
$(\'.myajax\').click(function(){
var data = {
action: \'my_action\',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert(\'Got this from the server: \' + response);
});
});
});
</script>
<?php
}
add_action(\'wp_ajax_my_action\', \'my_action_callback\');
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = $_POST[\'whatever\'];
$whatever += 10;
echo $whatever;
exit(); // this is required to return a proper result & exit is faster than die();
}
这是codex页面中的代码(稍作调整),对我来说很好,所以我建议将其作为起点。。如果这是您最初所做的,它在什么时候中断或停止工作?
NOTE: Mark就是我,当我从另一台电脑(不是我的电脑)访问网站时,我会使用一个辅助帐户。