У меня есть HTML-код, который отправляет ввод в PHP, где PHP перенаправить на страницу входа.

Но когда я делаю запрос на публикацию, как показано ниже, он возвращает ответ на javascript; с кодом пересылки index.html без перенаправления на index.html.

<script>
        function Sendmeaway() {
            var item_i = document.getElementById("item_select").value;

            if (item_i == "Initial_Value") {
                alert("Please Select the Correct Option or Enter the Comment");
            } else {
                $.post("./back_p/add_change_req.php", {
                        item : item_i
                    },
                    function(data, textStatus) {
                        alert("Response from server: " + data);
                        document.getElementById("item_select").selectedIndex = 0;
                        location.reload();
                    });
            }

        };
    </script>

PHP-код (он работает нормально, когда я иду прямо к PHP)

<?php echo $_POST["item"]; header('location: ../index.html'); ?>

0
checkmate 27 Фев 2018 в 17:32

3 ответа

Лучший ответ

Вы не можете перенаправлять пользователей таким образом. AJAX звонки могут только отправлять и получать данные.

Вместо этого перенаправьте пользователя, используя window.location.href = '' в функции успеха вашего вызова AJAX.

Так что вместо

<?php echo $_POST["item"]; header('location: ../index.html'); ?>

Делать

<?php echo $_POST["item"]; return '../index.html'; ?>

Затем используйте это возвращенное значение внутри вашего script вида:

function(data, textStatus) {
    alert("Response from server: " + data);
    document.getElementById("item_select").selectedIndex = 0;

    window.location.href = data; 
});
1
Red 27 Фев 2018 в 14:40

Когда вы делаете вызов ajax, вам нужно изменить страницу на стороне javascript вот так. Вы можете отправить 0 или 1 из php, чтобы решить, перенаправить или нет.

0
kylngr 27 Фев 2018 в 14:36

Вместо использования заголовка php используйте тег <meta> вне тега PHP

Такие как:

<?php

echo($_POST["item"]);

?>

<meta http-equiv="refresh" content="5;URL='../Index.html'" />

Замена 5 после content=" на любое количество секунд, пока вы не выполните перенаправление

0
user9418917user9418917 27 Фев 2018 в 14:40