Вызов jQuery Ajax возвращает весь необработанный код php-файла

Теперь я задаю этот вопрос после огромных усилий по поиску решения. Я знаю, что есть много одинаковых вопросов, но ни один из них не помог мне, у меня есть три основных файла: index.html, main.js и func.php, все они в том же каталоге в XAMPP/htdocs/ я работаю на локальном компьютере «XAMPP», теперь основная проблема в том, что когда я пытаюсь получить данные из файла php с помощью вызова AJAX, он возвращает весь необработанный код php, я пробовал чтобы сделать файлы настолько минималистичными для целей тестирования. и когда я пытаюсь запустить файл php из браузера, он работает нормально

индекс.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>

основной.js:

$(document).ready(function() {
    $.ajax({
        url: "func.php",
        method: "GET",
        success: function(data) {
            console.info(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.info(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 с тем же ответом


Я также пытался использовать CDN для jQuery, но это не сработало.

Я действительно сейчас расстроен и не знаю, что еще попробовать. Если бы вы могли мне помочь, я был бы очень признателен.

Если PHP-код просто возвращается в исходном виде (что означает, что он не выполняется), то само собой разумеющееся изменение PHP-кода не поможет! Аналогично, добавление dataType: "json" в AJAX тоже не поможет, потому что необработанный PHP-код — это не JSON! I also tried to use a CDN for the jQuery...почему? Часть jQuery, очевидно, работает, иначе она не запускала бы код AJAX. Я могу ошибаться, но похоже, что вы делаете много случайных предположений, вместо того, чтобы внимательно рассмотреть основной факт ситуации.

ADyson 26.06.2024 15:30

Убедитесь, что 1) вы используете правильный веб-сервер и получаете доступ к HTML-файлу через http://localhost/index.html в своем браузере (при условии, что вы тестируете это на своем локальном компьютере), 2) что на вашем веб-сервере установлен PHP и 3) ваш файл имеет расширение .php. Надеюсь, 2 и 3 рассмотрены, поскольку вы говорите, что файл называется func.php, и вы сказали, что установили XAMPP. Итак, я предполагаю, что 1) проблема.

ADyson 26.06.2024 15:31

Обратите внимание, что это не имеет ничего общего с jquery или ajax. Полагаю, вы получите тот же эффект, когда вручную перейдете по адресу func.php в браузере. Так что JavaScript, jQuery, Ajax, HTML... не имеют к этому никакого отношения.

trincot 26.06.2024 15:34
when I try to run the php file from the browser it works fine... Я предполагаю, что вы получили к нему доступ через другой URL-адрес, отличный от того, который пытается использовать код AJAX. Также используйте инструмент «Сеть» браузера, чтобы просмотреть полный URL-адрес, созданный браузером для запроса AJAX. Затем вы можете сравнить и сопоставить URL-адреса в каждом случае.
ADyson 26.06.2024 15:35

ADyson, пожалуйста, напишите последний комментарий в качестве ответа, чтобы я мог проверить, что это правильный ответ, на удивление ответ был просто использовать локальный хост, а не работающий сервер, прямо сейчас я чуть не умер, смеясь над собой, как решение было таким простым и Мне потребовалось около 4 дней, чтобы осознать это, спасибо от всего сердца

Ahmed 26.06.2024 15:35

Да, сервер VS Code Live не поддерживает PHP, вы не можете его использовать. (Ну, технически вы можете, но я бы не советовал. Apache гораздо надежнее)

ADyson 26.06.2024 15:36

ты прав, я такой глупый, я не думал об этом

Ahmed 26.06.2024 15:39

@ Ахмед, не волнуйся, это на удивление распространенная ошибка - я думаю, по крайней мере один человек каждую неделю пишет здесь с одной и той же проблемой. Я не думаю, что документация VS Code хорошо объясняет, что она поддерживает, а что нет.

ADyson 26.06.2024 15:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убеждаться

  1. вы используете правильный веб-сервер и получаете доступ к HTML-файлу через http://localhost/index.html в своем браузере (при условии, что вы тестируете это на своем локальном компьютере),

  2. что на вашем веб-сервере установлен PHP и

  3. ваш файл имеет расширение .php.

Надеюсь, 2) и 3) рассмотрены, поскольку вы говорите, что файл называется func.php, и вы сказали, что установили XAMPP. Итак, я предполагаю, что 1) проблема.

Если вы используете что-то вроде живого сервера Visual Studio Code, который не поддерживает PHP — хотя некоторые люди сообщают об успешном достижении этого путем добавления некоторых плагинов (см. Как настроить живой сервер vscode для правильной обработки файлов php ( Я использую Win10 и Chrome). Apache (который вы получаете с XAMPP), вероятно, будет лучшим выбором, поскольку он имеет хорошую поддержку PHP и более точно отражает среду, в которой в конечном итоге будет работать ваш PHP-код, если вы развернул его на реальном веб-сайте.

Другие вопросы по теме