Admin-ajax.php“缺少参数2”警告

时间:2013-01-25 作者:user13974

我在函数中有以下代码。php

<script type="text/javascript">
var post_id = "1055"; // hardcoded post id for testing purposes
var type = "some_type";
var data = {action: "get_variations", parent_id: post_id, item_type: type};
jQuery.post("/wp-admin/admin-ajax.php", data, function(response){
    alert(response);
});
</script>
<?php
function get_variations($parent_id, $item_type){

// etc..

}

add_action(\'wp_ajax_get_variations\', \'get_variations\', 10, 2);
?>
当ajax尝试调用get\\u变体时,我总是得到:

警告:get\\u variations()缺少参数2

我做错了什么?

2 个回复
SO网友:simonthesorcerer

Ajax调用使用$_POST-变量将其参数提交给函数。像$_POST[\'action\'] 总是由Wordpress Ajax调用使用(显然,包含操作的名称;),PHP只抱怨缺少第2个参数。

您可以使用Bainternet提供的解决方案。如果您想在ajax和“纯”PHP上下文中使用您的函数,可以这样做:

    <?php
    function get_variations($parent_id = false, $item_type = false){

    if(isset($_POST[\'parent_id\'])) {
        $parent_id = $_POST[\'parent_id\'];
        $item_type = $_POST[\'item_type\'];
    }

// etc..

}
这样,PHP将始终假定给定的两个参数,您也可以使用此函数$_POST.

SO网友:Bainternet

您的ajax回调没有参数,

这应该可以:

function get_variations(){

    $parent_id = $_POST[\'parent_id\'];
    $item_type = $_POST[\'item_type\'];
// etc..

}

add_action(\'wp_ajax_get_variations\', \'get_variations\');

结束

相关推荐

使用AJAX时WP_QUERY ORDERBY中断?

我遇到了一点问题。我有一个函数叫做get_press(), 它检索最新的新闻项目。它位于插件内部:class EWPress { function __construct() { load_plugin_textdomain( \'ew\', flase, dirname( plugin_basename( __FILE__ ) ) . \'/lang\' ); add_action( \'wp_enqueue_sc