Javascript PHP和JQuery奇怪的行为

Javascript PHP和JQuery奇怪的行为,javascript,php,jquery,html,oracle,Javascript,Php,Jquery,Html,Oracle,我有一个三层架构。数据库是oracle,业务/逻辑层是php,而前端是html/JavaScript。我的业务/逻辑层有一系列的单元测试,只有在满足需求时才能通过。当我通过javascript连接业务层和前端时,就会出现问题。经过大量调试,我找到了问题的根源: 导致错误的JavaScript代码 function getAllUsers() { var allUsers = []; $.ajax ({ url: '../php/get-all-us

我有一个三层架构。数据库是oracle,业务/逻辑层是php,而前端是html/JavaScript。我的业务/逻辑层有一系列的单元测试,只有在满足需求时才能通过。当我通过javascript连接业务层和前端时,就会出现问题。经过大量调试,我找到了问题的根源:

导致错误的JavaScript代码

function getAllUsers() {
        var allUsers = [];
    $.ajax ({
            url: '../php/get-all-users.php',
            success:function(data){
                allUsersJSON = JSON.parse(data);
                console.log(allUsersJSON);
                for (var i = 0; i < allUsersJSON.length; i++){
                    allUsers[i] = allUsersJSON[i].USER_NAME;
                }
                console.log(allUsers);
            }
    });

    return allUsers;

}
在我的一个测试中,我尝试了echo json_encode($db->getAllUsers())并得到一个结果,“[\”用户名\“:\”用户名\“]”。在get-all-users.php中,如果我注释掉所有内容,并回显从测试中获得的字符串,则网页现在可以正常加载,但这当然不是我想要的。此外,如果我在get-all-users.php中取消注释包含一次“Database.php”,并在my-Database.php中注释掉oci\u connect,则网页加载良好。这让我得出结论,问题的根源在于oci_connect

还有其他人有类似的经历吗?我试着用谷歌搜索,但没有找到结果。如果你需要更多的信息来解决这个问题,我很乐意把它们说出来

编辑:


我在linux上工作。我的队友正在使用Windows,他没有遇到类似的问题。

您的单元测试代码是什么?@lxe我的单元测试代码使用PHPUnit。它测试我的业务层中的所有模块,其中一个是Database.php。在那个测试中,我建立了一个连接,进行查询,销毁分配的资源,然后退出,这在许多不同的查询中都是重复的。“在我的一个测试中,我尝试了echo json_encode($db->getAllUsers());”我只是想知道你为什么要在那里调用数据库。为什么不直接查询端点?@lxe“为什么不直接查询端点?”我不太明白这个问题。什么是端点?无论如何,请看我的新编辑,也许这将有助于缩小可能出现的问题。那么,您能否添加一个示例,说明
$db->getAllUsers()
正在返回的内容?您也尝试过添加
console.log(数据)恰好在
成功:函数(数据){
行之后?
<?php
    include_once 'Database.php'

    $db = Database::instance();  // Singleton to initialize db.
    echo json_encode($db->getAllUsers());
?>
public function createConnection($username, $password, $connectionString){
        $this->_connection = oci_connect($username, $password, $connectionString);
        if (!$this->_connection) {
            $e = oci_error();
            trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
            throw new Exception("Database connection failed. Please check constructor arguments.");
        }else{
            //print "Database connection established.\n";
        }
    }