无法使用AJAX调用找到$ wpdb变量

问题描述 投票:1回答:1

我正在用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()
?>

这里使用XMLHttpRequest对象每2秒调用一次此函数

    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被找到并正常工作。有原因吗?先感谢您。

javascript php ajax wordpress
1个回答
0
投票

您的$mail变量未在conta()函数内设置,但您使用它执行查询。

使用它来加载基本的wordpress(只加载wordpress核心),这样你就可以使用$wpbd

<?php

    // use this flag to load only wordpress core
    define( 'SHORTINIT', true );
    // find the wp-load.php file and require it
    require( '/path/to/wp-load.php' );

    // now you can use $wpdb


    function conta($wpdb, $table_name, $mail)
    {
       $count = $wpdb->get_var("SELECT `contatore` FROM `".$table_name."` WHERE `email` = '".$mail."'");
       echo "$count";
    }

    // call the function and pass the parameters
    conta($wpdb, $table_name, $mail);

    // close connection
    $wpdb->close();
?>

更多关于wordpress核心qazxsw poi的旗帜。

© www.soinside.com 2019 - 2024. All rights reserved.