【发布时间】:2018-06-11 10:25:27
【问题描述】:
我正在 PHP 中为 Wordpress 创建一个应用程序,此时,我尝试每 2 秒通过 AJAX 从数据库中获取一个值,并且我创建了一个包含应该被触发的函数的新文件.
<?php
global $wpdb;
function conta(){
global $wpdb, $table_name;
$count = $wpdb->get_var("SELECT contatore FROM $table_name WHERE email = '$mail'");
echo "$count";
}
conta()
?>
这里每 2 秒调用一个 XMLHttpRequest 对象的函数
setInterval(function () {
var url = <?php echo json_encode($con); ?>;
var valuereq = new XMLHttpRequest();
valuereq.open("GET", url, true);
valuereq.send();
valuereq.status;
valuereq.onreadystatechange = function () {
if (valuereq.readyState == 4 && valuereq.status == 200) {
var return_data = valuereq.responseText;
document.getElementById("conta").innerHTML = "Executed: " + return_data;
}
else document.getElementById("conta").innerHTML = "Error";
}
}, 2000);
Http请求执行正确,但是收到这个错误:
Fatal error: Uncaught Error: Call to a member function get_var() on null in
C:\xampp\apps\wordpress\htdocs\wp-content\plugins\bittrex-
trader\admin\partials\conta.php:7 Stack trace: #0
C:\xampp\apps\wordpress\htdocs\wp-content\plugins\bittrex-
trader\admin\partials\conta.php(11): conta() #1 {main} thrown in
C:\xampp\apps\wordpress\htdocs\wp-content\plugins\bittrex-
trader\admin\partials\conta.php on line 7
程序无法找到全局变量 $wpdb,即使已声明。这只发生在 AJAX 请求中,因为如果我直接包含 $wpdb 文件,则会找到并正常工作。 有原因吗? 提前谢谢你。
【问题讨论】:
-
您是否将变量
$wpdb设置的文件包含在其中? -
在函数
conta()中,你在哪里声明或赋值给变量$mail? -
$wpdb 是 wordpress 的全局变量,它应该在 wordpress 插件文件中可用。我已经在项目的其他文件中使用过很多次了。
-
$mail 仍未声明,但这不是问题,因为它找不到 $wpdb。我想稍后在没有帮助的情况下解决这个问题。
标签: javascript php ajax wordpress