Php 调用AJAX时Wordpress插件中未定义的索引
我为Wordpress创建了插件,现在正在尝试学习 当我调用我的函数时:Php 调用AJAX时Wordpress插件中未定义的索引,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我为Wordpress创建了插件,现在正在尝试学习 当我调用我的函数时: wp-admin/admin-ajax.php?action=my_action 我得到这个错误: 注意:未定义索引:随便什么 这是我的职责 add_action( 'admin_footer', 'my_action_javascript' ); // Write our JS below here function my_action_javascript() { ?> <script type
wp-admin/admin-ajax.php?action=my_action
我得到这个错误:
注意:未定义索引:随便什么
这是我的职责
add_action( 'admin_footer', 'my_action_javascript' ); // Write our JS below here
function my_action_javascript() { ?>
<script type="text/javascript" >
jQuery(document).ready(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
}
导致此错误的原因是什么以及如何修复它?当您向
wp admin/admin ajax.php发出请求时,action=my_action
它只包括action
查询字符串参数,而不包括WordPress中回调函数所期望的任何参数
如果希望在浏览器测试中从地址栏执行此操作,请将$\u POST['which']
替换为$\u REQUEST['which']
并在浏览器中使用它wp admin/admin ajax.php?action=my_action&which=1234
-这将把which
作为GET
传递,而在ajax中它是POST
,但$\u请求
将同时看到这两个
也就是说,您的示例代码是正确的-我甚至在本地安装上对其进行了测试。当您的JavaScript执行时,它将包含这两个参数作为数据
对象的一部分,然后可以在ajax处理程序中对其进行处理。只需在浏览器中加载您的站点,除非您有其他JavaScript错误,否则代码应该会发出警报。删除多余的内容,为清晰起见重新编写。
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 = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
wp_die(); // this is required to terminate immediately and return a proper response
}