@RionaNice
Изучаю программирование

Как перенаправить на другую страницу?

Мыслящие люди, помогите пожалуйста, что-то докумекать не могу.
Есть страница partners.php
на этой странице форма с полями, пользователь ее заполнил и нажимает сохранить.
Срабатывает скрипт:
$(document).ready(function(){
            $('#send_file').click(function(){
                // собираем данные с формы
                $(".loader").removeClass('hidden');
                var name11=$('#name11').val();
                var patronymic=$('#patronymic').val();
                var surname=$('#surname').val();
                var specialization=$('#specialization').val();
                var country=$('#country').val();
                var area=$('#area').val();
                var city=$('#city').val();
                var phone_part=$('#phone_part').val();
                var mail=$('#mail').val();
                var password=$('#password').val();
                var id=$('#id').val();
                var sogl=$('#sogl').val();
                         
              
                // отправляем данные
                $.ajax({
                    url: "../send_phone_partners.php", // куда отправляем
                    type: "post", // метод передачи
                    dataType: "json", // тип передачи данных
                    data: { // что отправляем
                        "id": id,
                        "name11": name11,
                        "patronymic": patronymic,
                        "surname":surname,
                        "specialization":specialization,
                        "country":country,
                        "area":area,
                        "city":city,
                        "phone_part":phone_part,
                        "mail":mail,
                        "password":password,
                        "sogl":sogl
                    },
                    // после получения ответа сервера
                   success: function(data) {
                    $('.messages').html(data.result); // выводим ответ сервера
                    setTimeout(function() {
                        $(".loader").addClass('hidden');
                    }, 50000) // 10 секунд
                    }
                });
            });
        });

Скрипт отправляет все данные с помощью ajax в файл send_phone_partners.php.
В файл send_phone_partners.php" приходят все данные, которые заполнил пользователь на странице partners.php.

Если все верно, они записываются в Базу данных на этой странице и тут же я хочу после записи перенаправить посетителя на другую страницу, представляю ниже код файла send_phone_partners.php.
В нем следующее, если нет телефона, то ошибка. Но рассмотрим идеальный вариант, ошибок нет и запись (точнее обновление )проходит, но die не срабатывает.. ПОЧЕМУ? На любой другой странице срабатывает, а здесь нет... может потому что ajax-oм отправляла данные сюда? ПОДСКАЖИТЕ ПОЖАЛУЙСТА)))))
$msg_box = ""; // в этой переменной будем хранить сообщения формы
    $errors = array(); // контейнер для ошибок
    // проверяем корректность полей
    if($_POST['phone_part'] == "")$errors[] = "Заполните поле 'Телефон'";
 
    // если форма без ошибок
    if(empty($errors)){     

        // собираем данные из формы
        $message .= "ТелеФон: " . $_POST['phone_part']. "<br/>";  
        $message .= "Дата и время (MSC): " . date("d.m.y H:i"); 
        send_mail($message); // отправим письмо
      
        
        // выведем сообщение об успехе
        $msg_box = "<span style='color: green;'>Заполненные данные успешно отправлены!</span>";
        $name = isset($_POST['name11'])?mysqli_real_escape_string($mysql, trim($_POST['name11'])):'';
        $phone = isset($_POST['phone_part'])?mysqli_real_escape_string($mysql, trim($_POST['phone_part'])):'';
        $patronymic = isset($_POST['patronymic'])?mysqli_real_escape_string($mysql, trim($_POST['patronymic'])):'';
        $surname = isset($_POST['surname'])?mysqli_real_escape_string($mysql, trim($_POST['surname'])):'';
        $specialization = isset($_POST['specialization'])?mysqli_real_escape_string($mysql, trim($_POST['specialization'])):'';
        $country = isset($_POST['country'])?mysqli_real_escape_string($mysql, trim($_POST['country'])):'';
        $area = isset($_POST['area'])?mysqli_real_escape_string($mysql, trim($_POST['area'])):'';
        $city = isset($_POST['city'])?mysqli_real_escape_string($mysql, trim($_POST['city'])):'';
        $mail = isset($_POST['mail'])?mysqli_real_escape_string($mysql, trim($_POST['mail'])):'';
        $password = isset($_POST['password'])?mysqli_real_escape_string($mysql, trim($_POST['password'])):'';
        $social =  isset($_POST['social'])?mysqli_real_escape_string($mysql, trim($_POST['social'])):'0';
        $date = time();
        $id = intval($_POST['id']);
               
        $query_count = "UPDATE CRM_partners SET  name='".$name."',patronymic='".$patronymic."',surname='".$surname."',specialization='".$specialization."',  country='".$country."', area='".$area."',city='".$city."',  phone='".$phone."', mail='".$mail."',password='".$password."',  status='".$status."',social='".$social."',  time='".$date."'   WHERE id='".$id."'  LIMIT 1";
        mysqli_query($mysql,$query_count) or die('Ошибка обновления CRM_partners id:'.$id);     
        die ("<meta http-equiv=refresh content='0; url=../complex/personal.php?partners=$id'>"); 
    }
    else
    {
        // если были ошибки, то выводим их
        $msg_box = "";
        foreach($errors as $one_error){
            $msg_box .= "<span style='color: red;'>$one_error</span><br/>";
        }
    }
 
    // делаем ответ на клиентскую часть в формате JSON
    echo json_encode(array(
        'result' => $msg_box

    ));
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых
dataType: "json", // тип передачи данных
это не тип передачи, а тип данных ожидаемого ответа. То есть в ответ должен прилететь json.

Во вторых:
но die не срабатывает.. ПОЧЕМУ? На любой другой странице срабатывает, а здесь нет... может потому что ajax-oм отправляла данные сюда? ПОДСКАЖИТЕ ПОЖАЛУЙСТА)))))
die срабатывает, просто вы не понимаете что делаете, и от этого у вас лажа. Сервер возвращает СКРИПТУ строку, которая кроме того что нифига на json, еще и не "добавляется" в хтмл, а возвращается к скрипту в виде переменной возврата. В консоли браузера смотрите - там должна быть соответствующая ошибка, а во вкладке нетворк еще и тело ответа.

Конкретно в вашем случае - вроде часть скрипта писал кто-то другой, кто что-то понимает, а вы воткнули свой die с левым бредом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы