Хорошо — давайте разберёмся. Сейчас у вас недостаточно информации в вопросе (не показан конкретный текст ошибки из консоли и сам код endpoint'а и запрос из фронтенда), поэтому ниже я приведу:
1) список типичных причин, почему «исполнители» не отображаются и какие ошибки в консоли что обычно означают;
2) краткий чеклист для отладки;
3) готовый минимальный рабочий пример PHP‑эндпойнта, который отдаёт список исполнителей в JSON (с включённым выводом ошибок и CORS);
4) пример fetch (JS) для получения и отрисовки списка;
5) что точно пришлите мне дальше, если это не поможет.
1) Частые причины и типичные сообщения в консоли
- ERR_CONNECTION_REFUSED / net::ERR_CONNECTION_REFUSED — сервер не слушает по указанному адресу/порту (не запущен PHP‑сервер, неверный порт/хост).
- 404 Not Found — неверный URL к PHP‑файлу.
- 500 Internal Server Error — ошибка в PHP (смотрите логи PHP/серверный error_log или включите display_errors для отладки).
- CORS policy: No 'Access-Control-Allow-Origin' header is present — фронт и бек на разных origin (порт/домен), нужно добавить заголовок Access‑Control‑Allow‑Origin или настроить proxy.
- SyntaxError: Unexpected token < in JSON at position 0 — сервер вернул HTML (обычно страница ошибки или варнинг PHP) вместо JSON.
- Mixed Content — вы на https, а делаете запрос к http — браузер блокирует.
2) Быстрая диагностика (чеклист)
- Откройте вкладку Network в DevTools и посмотрите запрос к endpoint: статус, response, заголовки.
- Откройте endpoint напрямую в браузере по тому же URL — что вернётся?
- Посмотрите точный текст ошибки в консоли (скопируйте сюда).
- Проверьте сервер: запущен ли Apache/Nginx/PHP встроенный сервер (php -S)?
- Проверяйте лог ошибок PHP / веб‑сервера (error_log).
- Временно включите вывод ошибок в PHP: ini_set('display_errors',1); error_reporting(E_ALL);
- Убедитесь, что PHP возвращает JSON без лишнего HTML/пробелов/UTF‑8 BOM.
3) Минимальный безопасный пример PHP‑эндпоинта (PDO), возвращает JSON и поддерживает CORS
Сохраните в файл api/performers.php (путь подставьте свой):
<?php
// Для отладки ошибок (уберите в продакшн)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Установим заголовки JSON и CORS (для разработки)
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *'); // в продакшне ограничьте домен
header('Access-Control-Allow-Methods: GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit;
}
$host = '127.0.0.1';
$db = 'your_db';
$user = 'your_user';
$pass = 'your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'DB connection failed', 'message' => $e->getMessage()]);
exit;
}
try {
$stmt = $pdo->query('SELECT id, name FROM performers ORDER BY name');
$performers = $stmt->fetchAll();
echo json_encode(['success' => true, 'performers' => $performers]);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Query failed', 'message' => $e->getMessage()]);
}
4) Пример fetch в браузере и простая отрисовка
Пример JS (подставьте реальный URL):
const url = 'http://localhost/api/performers.php'; // полный URL, если фронт и бек на разных origin
fetch(url)
.then(resp => {
if (!resp.ok) throw new Error('Network response was not ok: ' + resp.status);
return resp.json();
})
.then(data => {
if (data.error) {
console.error('Server error:', data);
return;
}
const list = document.getElementById('performersList');
list.innerHTML = '';
data.performers.forEach(p => {
const li = document.createElement('li');
li.textContent = p.name;
list.appendChild(li);
});
})
.catch(err => {
console.error('Fetch error:', err);
});
HTML:
<ul id="performersList"></ul>
5) Дополнительно — типичные исправления под конкретные ошибки
- Если CORS — добавьте header('Access-Control-Allow-Origin: *'); и в случае нестандартных заголовков/методов обрабатывайте OPTIONS.
- Если ERR_CONNECTION_REFUSED — убедитесь, что сервер запущен и URL правильный (порт).
- Если 500 — включите display_errors и смотрите точный стек (временно).
- Если JSON неожиданного вида — откройте ответ в Network → Response и посмотрите первые символы; если там HTML — ищите PHP Warning/Notice в output.
6) Что пришлите мне дальше для точной помощи
- Полный текст ошибки из консоли (или скриншот Network → ответ/Status).
- Код вашего PHP‑файла подключения + обработчика (весь файл).
- Код фронтенда, который делает запрос (fetch/axios/ajax).
- URL, под которым вы запускаете бек и фронт, и схема (http/https), порты.
Если хотите, пришлите ваши реальные куски кода и текст ошибки — и я укажу точное место поломки и дам исправленный вариант.