我正在创建一个新插件,我遇到了这个错误致命的错误:在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){ }
});
});
}
最合适的回答,由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.