现在我在付出巨大努力寻找解决方案后提出这个问题,我知道有很多相同的问题,但没有一个对我有用,我有三个主要文件,
index.html
,main.js
和func.php
所有这些都在XAMPP/htdocs/
中的同一目录中,我正在本地计算机“XAMPP”中工作,现在的主要问题是,当我尝试使用AJAX调用从php文件中获取数据时,它返回整个 php 原始代码,我尝试使文件如此简约以用于测试目的。当我尝试从浏览器运行 php 文件时,它工作正常
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="" method="get">
<select name="course" id="courses">
<option disabled selected>select course</option>
</select>
</form>
<script src="jquery.min.js"></script>
<script src="main.js"></script>
</body>
</html>
main.js:
$(document).ready(function() {
$.ajax({
url: "func.php",
method: "GET",
success: function(data) {
console.log(data);
},
error: function (x, y, z) {
console.error(x);
console.error(y);
console.error(z);
}
});
});
func.php:
<?php
$data = [["id" => "1", "name" => "html"],["id" => "2", "name" => "css"]];
echo json_encode($data);
返回:但它来自于
success
而不是错误:
<?php
$data = [["id" => "1", "name" => "html"],["id" => "2", "name" => "css"]];
echo json_encode($data);
我尝试依靠Gemini来解决问题,所以我尝试了很多解决方案,现在我会做其中的大部分,我现在会完成其中的大部分。
第一次尝试:
in main.js jQuery AJAX call
我尝试将其更改为:
$(document).ready(function() {
$.ajax({
url: "func.php",
data: {func: "get_data"},
dataType: "json",
type: "GET",
success: function(data) {
console.log(data);
},
error: function (x, y, z) {
console.error(x);
console.error(y);
console.error(z);
}
});
});
但不幸的是它
didn't work
并且反应是:
readyState: 4
responseText: "<?php\r\n ob_start();\r\n header('Content-type: application/json; charset=UTF-8');\r\n\r\n $data = [[\"id\" => \"1\", \"name\" => \"html\"],[\"id\" => \"2\", \"name\" => \"css\"]];\r\n ob_end_clean();\r\n ob_end_flush();\r\n\r\n echo json_encode($data);\r\n "
status: 200
statusText: "OK"
parsererror
main.js:13 SyntaxError: Unexpected token '<', "<?php
"... is not valid JSON
第二次尝试: 这次第一次更改时,我尝试将
func.php
文件更改为:
<?php
ob_start();
header('Content-type: application/json; charset=UTF-8');
$data = [["id" => "1", "name" => "html"],["id" => "2", "name" => "css"]];
ob_end_clean();
ob_end_flush();
echo json_encode($data);
exit();
但是
it didn't work also
有相同的反应
我还尝试使用 jQuery 的 CDN,但没有成功
我现在真的很沮丧,我不知道还能尝试什么,如果你能帮助我,我将非常感激
确保
您正在使用正确的网络服务器并通过浏览器中的 http://localhost/index.html 访问 HTML 文件(假设您正在本地计算机上测试此文件),
您的网络服务器已安装 PHP,并且
您的文件以 .php 扩展名命名。
希望 2) 和 3) 被涵盖,因为你说该文件名为 func.php,并且你说你已经安装了 XAMPP。所以我猜 1) 是问题所在。
如果您使用的是 Visual Studio Code 的 Live Server 之类的东西,它不支持 PHP - 尽管有些人报告通过添加一些 [插件] 成功实现了这一点(如何配置 vscode live server 来正确处理 php 文件(我使用的是 Win10 和 Chrome)? Apache(通过 XAMPP 获得)可能是更好的选择,因为它对 PHP 具有良好的支持,并且会更准确地反映 PHP 代码最终运行的环境。您将其部署到了真实的网站。