致命错误:在我的ajaxPage中对非对象调用成员函数Query()

时间:2012-03-15 作者:SANS780730

我正在创建一个新插件,我遇到了这个错误致命的错误:在ajax页面中的非对象上调用成员函数query()。如何解决此错误。

这是我的代码:

if (isset($_REQUEST[\'ckballvalue\'])) 
{    
$allvideos=$_REQUEST[\'ckballvalue\'];
 $now = date("Y-m-d H:i:s", time());
 global $wpdb; 
$insert_video =$wpdb->query("INSERT INTO " . $wpdb->prefix . "hdflvvideoshare (link,post_date)
VALUES (\'".$allvideos."\',\'".$now."\')") or die(\'not inserting\'); 
}

// i am calling this page by js: 
function chkbox() { 
    $(\'[name^=checkbox]:checked\').each(function() { 
        var ckballvalue=($(this).val()); 
        $.ajax({ 
        type: "POST", 
        url: "<?php echo $site_url; ?>/wp-content/plugins/<?php echo $contus; ?>/ajaxpages/ajaxpage.php", 
        data: "ckballvalue="+ckballvalue, 
        success: function(msg){ } 
    }); 
    }); 
}

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

问题是您没有加载WordPress,因此没有定义它所包含的框架(在这种特殊情况下global $wpdb; 对象及其方法)。

WordPress内置了处理ajax请求的方法。尤其应将数据发送到url:admin_url(\'admin-ajax.php\'). 发送的数据中应包含变量action (并且应该是唯一的),即。action:\'my_action_to_do_something\'.

WordPress将触发两个挂钩中的一个:

 \'wp_ajax_my_action_to_do_something\' //For logged in users
 \'wp_ajax_noprov_my_action_to_do_something\'//For non-logged in users
您应该将回调函数挂接到其中一个或两个钩子上(取决于该操作是针对登录用户、非登录用户还是同时针对这两个用户执行)。发送的数据可通过以下方式获得:$_REQUEST.

loads 属于AJAX related questions 在这个网站上,我建议大家通读其中一些。此外,请参见Codex pages on ajax in plug-ins.

结束