AJAX调用require_once在php中没有执行

时间:2018-06-17 10:55:57

标签: php mysql json ajax

我正在尝试制作一段代码,从我的mysql服务器检索数据并每秒刷新其内容而不刷新页面。

当我执行下面的代码时,屏幕上出现错误:

Warning: require_once(../cfg/db.php): failed to open stream: No such file or directory in \php\classes\update.php on line 9

Fatal error: require_once(): Failed opening required '../cfg/db.php' (include_path='C:\xampp\php\PEAR') in \php\classes\update.php on line 9

路径设置正确,因为当我包含不通过ajax调用的文件时,它可以工作。所以不知何故,ajax调用不想查看另一个目录。有人解决这个问题吗?

/pages/main.php
在此文件中正在初始化ajax调用。

$(document).ready(function(){
    retrieveUpdate();
})

function retrieveUpdate(){
    $.ajax({
        type: 'post',
        url: '../php/classes/update.php',
        data: 'type=test',
        dataType: 'json',
        success: function(index){
            console.log("LOG: "+index);
            //alert(index[0]);

            setTimeout(index,1000);
        },
        timeout: 1000,
        error: function(error){
            console.log(error);
        }
    })
}

/php/classes/update.php

require_once('../cfg/db.php'); // folder is /php/cfg/db.php

class Update
{

    public function __construct(){

    }

    public function getUpdate(){
        $db = new DB();

        if($db->databaseConnection()){
            $query_retrieve_update = $db->db_connection->prepare("SELECT update_id FROM update");
            $query_retrieve_update->execute();

            while($result_retrieve_update = $query_retrieve_update->fetch(PDO::FETCH_ASSOC)){
                $json_retrieve_update[] = $result_retrieve_update;
            }
        print json_encode($json_retrieve_update);

        }
    }

}
    $update= new Update();

if(isset($_POST['type'])){
    if($_POST['type'] == 'test'){
        $update->getUpdate();
    }
}

/php/cfg/db.php

define("DB_HOST", "localhost");
define("DB_NAME", "xxx");
define("DB_USER", "xxx");
define("DB_PASS", "xxx");

class DB
{
    public $db_connection = NULL;

    public function databaseConnection(){
        if($this->db_connection != NULL){
            return true;
        }else{
            try{
                $this->db_connection = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', DB_USER, DB_PASS);
                return true;
            }catch(PDOException $e){
                $this->errors[] = DB_CONN_FAIL;
            }
        }
        return false;
    }
}
$db = new DB();

1 个答案:

答案 0 :(得分:0)

我认为您需要添加__DIR__。有关解释,请参阅How to use __dir__?

require_once(__DIR__.'/../cfg/db.php');