如何在javascript中调用PHP函数,不返回Ajax

时间:2022-12-05 11:44:13

I've been trying to get the data I have in my database(in my PHP file) over to my javascript program. I'm trying to get the query results over to the Javascript file so I can produce a graph out of these results.

我一直在尝试将数据库(PHP文件)中的数据转到javascript程序中。我试图将查询结果转到Javascript文件中,以便从这些结果中生成图形。

I have tried to use ajax but it isn't responding anything back. I'm not sure where I'm going wrong. My PHP file is called MySQLDau.php. Any help is much appreciated! Thanks!

我尝试过使用ajax,但它没有任何响应。我不知道我哪里出错了。我的PHP文件名为mysqldap . PHP。非常感谢您的帮助!谢谢!

PHP code:

PHP代码:

<?php

    header("Access-Control-Allow-Origin: *");

    //Class for holding queries
    class MySQLDao
    {
        var $dbhost = null;
        var $dbuser = null;
        var $dbpass = null;
        var $mysqli = null;
        var $dbname = null;
        var $result = null;




        //constructor
        function __construct()
        {
            $this->dbhost = Conn::$dbhost;
            $this->dbuser = Conn::$dbuser;
            $this->dbpass = Conn::$dbpass;
            $this->dbname = Conn::$dbname;
        }

        //Attempt a connection to the database
        public function openConnection()
        {
            //Try and connect to the database
            $this->mysqli = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname);
            //If the connection threw an error, report it
            if (mysqli_connect_errno())
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        //Get method for retrieving the database conection
        public function getConnection()
        {
            return $this->mysqli;
        }

        //Close the connection to the database
        public function closeConnection()
        {
            //If there is a connection to the database then close it
            if ($this->mysqli != null)
                $this->mysqli->close();
        }

        //-----------------------------------QUERY METHODS-------------------------------------

        public function generateRoomID()
        {
            $sql = "INSERT INTO room (room_id) VALUES (null);";
            $result = $this->mysqli->query($sql);
            if ($result == true)
            {
                $toReturn["status"] = true;
                $toReturn["roomID"] = $this->mysqli->insert_id;
                return $toReturn;
            }
            else
            {
                $toReturn["status"] = false;
                $toReturn["message"] = mysql_error($this->mysqli);
                return $toReturn;
            }
        }

        public function saveRoom($data)
        {
            $roomID = $data[0];
            $roomDescription = $data[1];
            $columns = $data[2];
            $rows = $data[3];

            $this->mysqli->autocommit(FALSE);

            $this->mysqli->query("UPDATE room SET room_description='".$roomDescription."' WHERE room_id='".$roomID."';");

            for ($i = 0; $i<count($columns); $i++)
            {
                for ($j = 1; $j<=$rows[$i]; $j++)
                {
                    $currentLabel = "{$columns[$i]}{$j}";
                    $this->mysqli->query("INSERT INTO shelf (shelf_label) VALUES ('".$currentLabel."');");
                    $shelfID = $this->mysqli->insert_id;
                    $this->mysqli->query("INSERT INTO room_shelf (room_id, shelf_id) VALUES ('".$roomID."','".$shelfID."');");
                }
            }

            if ($this->mysqli->commit())
            {
                $toReturn["status"] = true;
                $toReturn["message"] = "Room Created";
                return $toReturn;
            }
            else
            {
                $this->mysqli->rollback();
                $toReturn["status"] = false;
                $toReturn["message"] = "SQL Error";
                return $toReturn;
            }
        }

        public function updateShelf($data)
        {
            $shelfID = $data[0];
            $itemName = $data[1];
        }

        public function getRoomDetails($data)
        {
            $roomID = $data[0];

            $sql = "SELECT room.room_description, shelf.shelf_label, shelf.shelf_id FROM room INNER JOIN room_shelf ON room.room_id=room_shelf.room_id INNER JOIN shelf ON shelf.shelf_id=room_shelf.shelf_id WHERE room.room_id='".$roomID."';";

            $result = $this->mysqli->query($sql);

            if (mysqli_num_rows($result) > 0)
            {
                $toReturn["status"] = true;
                $toReturn["message"] = "Room Found";
                $toReturn["room_description"] = $row['room_description'];
                $shelves = [];

                foreach ($result as $row)
                {
                    $currentShelf["shelf_label"] = $row['shelf_label'];
                    $currentShelf["shelf_id"] = $row['shelf_id'];
                    array_push($shelves, $currentShelf);
                }
                $toReturn["shelves"] = $shelves;
                return $toReturn;
            }
            else
            {
                $toReturn["status"] = false;
                $toReturn["title"] = "Error";
                $toReturn["message"] = "Room Not Found";
                return $toReturn;
            }

        }

        echo "Hello World!";

        public function getResults($data){

            $sql = "SELECT * FROM room";

            $result = $this->mysqli->query($sql);

            if (mysql_num_rows($result) == 1) {
                $obj = mysql_fetch_object($result, 'obResults');

            }

            echo json_encode($obj);
        }   
    }
?>

Part of my Javascript code:

我的部分Javascript代码:

  function callPHP() {
        $.ajax ({
            type: "GET",
            url: "MySQLDao.php",
            data: { action : 'getResults' },
            success: function(output) {
                alert(output);
            }
        });
    }

1 个解决方案

#1


2  

You don't have any code that is checking the GET parameters, instantiating the class and calling the function. Your AJAX request just creates that class, but does not actually execute anything.

没有任何代码检查GET参数,实例化类并调用函数。您的AJAX请求只是创建了这个类,但实际上并不执行任何操作。

What you can do, is after the closing } of the class definition is this:

你能做的是,在类定义的结束}之后是:

$daoObj = new MySQLDao();
$daoObj->getResults(); // this function takes a $data parameter, but doesn't use it

This will execute your getResults function, but is currently ignoring the "data: { action : 'getResults' }" part of your AJAX request. Get the basic functionality working (ie. returning something useful), then improve upon it to execute different functions based on the AJAX request.

这将执行getResults函数,但目前忽略了AJAX请求的“data: {action: 'getResults'}”部分。使基本功能正常工作。返回一些有用的东西),然后改进它以根据AJAX请求执行不同的功能。

#1


2  

You don't have any code that is checking the GET parameters, instantiating the class and calling the function. Your AJAX request just creates that class, but does not actually execute anything.

没有任何代码检查GET参数,实例化类并调用函数。您的AJAX请求只是创建了这个类,但实际上并不执行任何操作。

What you can do, is after the closing } of the class definition is this:

你能做的是,在类定义的结束}之后是:

$daoObj = new MySQLDao();
$daoObj->getResults(); // this function takes a $data parameter, but doesn't use it

This will execute your getResults function, but is currently ignoring the "data: { action : 'getResults' }" part of your AJAX request. Get the basic functionality working (ie. returning something useful), then improve upon it to execute different functions based on the AJAX request.

这将执行getResults函数,但目前忽略了AJAX请求的“data: {action: 'getResults'}”部分。使基本功能正常工作。返回一些有用的东西),然后改进它以根据AJAX请求执行不同的功能。