gpt4 book ai didi

javascript - 如何在 javascript 中从 PHP 调用函数,Ajax 不返回任何内容

转载 作者:行者123 更新时间:2023-12-03 03:39:01 25 4
gpt4 key购买 nike

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

我尝试使用ajax,但它没有响应任何信息。我不确定我哪里错了。我的 PHP 文件名为 MySQLDau.php。任何帮助深表感谢!谢谢!

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);
}
}
?>

我的 Javascript 代码的一部分:

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

最佳答案

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

您可以做的,是在类定义的结束}之后:

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

这将执行您的 getResults 函数,但当前忽略 AJAX 请求的“data: { action : 'getResults' }”部分。让基本功能正常工作(即返回有用的内容),然后对其进行改进以根据 AJAX 请求执行不同的功能。

关于javascript - 如何在 javascript 中从 PHP 调用函数,Ajax 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45719155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com