jQuery Ajax 调用返回整个 php 文件原始代码

问题描述 投票:0回答:1

现在我在付出巨大努力寻找解决方案后提出这个问题,我知道有很多相同的问题,但没有一个对我有用,我有三个主要文件,

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,但没有成功

我现在真的很沮丧,我不知道还能尝试什么,如果你能帮助我,我将非常感激

php jquery ajax
1个回答
0
投票

确保

  1. 您正在使用正确的网络服务器并通过浏览器中的 http://localhost/index.html 访问 HTML 文件(假设您正在本地计算机上测试此文件),

  2. 您的网络服务器已安装 PHP,并且

  3. 您的文件以 .php 扩展名命名。

希望 2) 和 3) 被涵盖,因为你说该文件名为 func.php,并且你说你已经安装了 XAMPP。所以我猜 1) 是问题所在。

如果您使用的是 Visual Studio Code 的 Live Server 之类的东西,它不支持 PHP - 尽管有些人报告通过添加一些 [插件] 成功实现了这一点(如何配置 vscode live server 来正确处理 php 文件(我使用的是 Win10 和 Chrome)? Apache(通过 XAMPP 获得)可能是更好的选择,因为它对 PHP 具有良好的支持,并且会更准确地反映 PHP 代码最终运行的环境。您将其部署到了真实的网站。

© www.soinside.com 2019 - 2024. All rights reserved.