繁体   English   中英

调用AJAX时Wordpress插件中的未定义索引

[英]Undefined index in Wordpress plugin when call AJAX

我为Wordpress创建了插件,现在尝试在plugin中学习Ajax

当我调用函数时:

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
}

和函数回调

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
}

是什么导致此错误,我该如何解决?

当您向wp-admin/admin-ajax.php?action=my_action发出请求时,它仅包含action查询字符串参数,而不包括WordPress中的回调函数期望的whatever参数。

如果您希望它在地址栏中的浏览器测试中起作用,请将$_POST['whatever']替换$_POST['whatever'] $_REQUEST['whatever'] ,然后在浏览器中使用它wp-admin/admin-ajax.php?action=my_action&whatever=1234 -这将通过whatever一个GET ,而在你的Ajax这是一个POST ,但$_REQUEST会看到两者。

也就是说,您的示例代码是正确的-我什至在本地安装上对其进行了测试。 当您的JavaScript执行时,这两个参数都将作为data对象的一部分包含在内,然后可以在ajax处理程序中进行处理。 只要将您的网站加载到浏览器中,代码就会发出警报,除非您遇到其他JavaScript错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM