Переадресация с одной страницы на другую

Рейтинг: 0Ответов: 1Опубликовано: 31.07.2023

Есть главная страница сайта, на ней 2 кнопки, хочу по нажатию на кнопку отправить POST-запрос на redirect.php и уже в нем определить, куда перенаправить. В POST-запросе в тело добавляю поле res, в котором записываю строку, от значения этой строки зависит, куда redirect.php должен перенаправить. Пытаюсь с помощью $_POST поймать поле res, затем в if сверяю возможные его значения, после этого переадресую с помощью header. header перенаправляет на файл addTask.php. В нем с помощью require вызываю страницы html. Запрос работает корректно, но вместо переадресации на другую страницу, в ответе приходят первые слова из той страницы, на которую, хочу переадресовать. Помогите разобраться, пожалуйста, может, как-то по-другому надо все это делать.

файл index.php

<?php
require('header.html');
require('main.html');
?>

файл redirect.php

<?php
if ($_POST['res'] == 'addTask') {
    header('Location: addTask.php');
    exit();
}
?>

файл addTask.php

<?php 
require('addTask.html');
?> 

Запрос делаю так

addTaskButton.addEventListener('click', () => {
    console.log('addTask button clicked');
    let arr = {
        res: 'addTask'
    };
    let params = new FormData();
    params.set('res', 'addTask')
    postData('index.php', params).then((data) => {
        console.log(data);
    })
})

Сама функция postData

//// Определяем функцию которая принимает в качестве параметров url и данные которые необходимо обработать
const postData = async (url = '', data = '') => {
    // Формируем запрос
    const response = await fetch(url, {
        method: 'POST',
        body: data
    }).then(response => response.json())
}

Все работает на Docker

Ответы

▲ 0

На основании InDevX переделал так

Запрос делается так

addTaskButton.addEventListener('click', () => {
    console.log('addTask button clicked');
    let arr = {
        res: 'addTask'
    };
    let params = new FormData();
    params.set('res', 'addTask')
    postData('redirect.php', params).then((data) => {
        window.location.href = data.redirectURL;
    })
})

функция postData

//// Определяем функцию которая принимает в качестве параметров url и данные которые необходимо обработать
const postData = async (url = '', data = '') => {
    // Формируем запрос
    const response = await fetch(url, {
        method: 'POST',
        body: data
    })
    return await response.json();
}

файл redirect.php

<?php
if ($_POST['res'] == 'addTask') {
    echo json_encode(['redirectURL' => 'addTask.php']);
}
?>