За последние 24 часа нас посетили 39672 программиста и 1284 робота. Сейчас ищут 1242 программиста ...

Как правильно делать редирект при post запросе

Тема в разделе "Сделайте за меня", создана пользователем Dilon, 3 май 2017.

  1. Dilon

    Dilon Активный пользователь

    С нами с:
    4 май 2014
    Сообщения:
    119
    Симпатии:
    4
    Адрес:
    соседний двор
    Никак не могу понять.
    После вставки комментария ставлю перезагрузку страницы, чтобы отобразился. Но при повторной перезагрузке браузер опять хочет отправить данные и вылезает окошко.
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Покажи, как делаешь.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    После того как принял комментарий и добавил в базу например, делай перенаправление на страницу с помощью header и location например
     
    TeslaFeo нравится это.
  4. Dilon

    Dilon Активный пользователь

    С нами с:
    4 май 2014
    Сообщения:
    119
    Симпатии:
    4
    Адрес:
    соседний двор
    В принципе я это понимаю. Но, у меня что-то не получается. Проблема не такая страшная, ну зачем кому-то после добавления комментария перезагружать страницу просто так. Но блин, все равно не нравится мне это вылезающее окошко.

    Или может я не туда ставлю этот редирект. И так и сяк ставил, не выходит. Или нужно в ajax его делать?
    PHP:
    1. function addcommAction() {
    2.     if (! empty($_POST['content'])) {
    3.  
    4.         $content = isset($_POST['content']) ? $_POST['content'] : null;
    5.         $content = htmlspecialchars($content);
    6.  
    7.         $user_id = isset($_POST['user_id']) ? $_POST['user_id'] : null;
    8.         $user_id = intval($user_id);
    9.  
    10.         $product_id = isset($_POST['product_id']) ? $_POST['product_id'] : null;
    11.         $product_id = intval($product_id);
    12.  
    13.         $status = isset($_POST['status']) ? $_POST['status'] : null;
    14.         $status = intval($status);
    15.  
    16.     } else {
    17.         return false;
    18.     }
    19.  
    20.     // Запись данных в БД
    21.     $result = insertComment($content, $user_id, $product_id, $status);
    22.  
    23.    
    24.     if ($result) {
    25.         $resData['success'] = 1;
    26.         $resData['message'] = 'Комментарий добавлен';
    27.     }else{
    28.         $resData['success'] = 0;
    29.         $resData['message'] = 'Ошибка добавления комментария';
    30.     }
    31.     echo json_encode($resData);
    32.  
    33.     return($resData);
    34. }
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Да, лучше перенаправлять

    Запрос у тебя по технологии ajax?
     
  6. Dilon

    Dilon Активный пользователь

    С нами с:
    4 май 2014
    Сообщения:
    119
    Симпатии:
    4
    Адрес:
    соседний двор
    Ну да наверно. В ajax я не шарю, просто использовал готовый пример. На submit формы повесил такую функцию
    Код (Javascript):
    1. function newComment(id) {
    2.     var content = $('#contentComm'+id).val();
    3.     var user_id      = $('#userId').val();
    4.     var status      = $('#statusCom').val();
    5.  
    6.     var postData = {content: content, product_id: id, user_id: user_id, status: status};
    7.  
    8.     $.ajax({
    9.         type: 'POST',
    10.         async: false,
    11.         url: "/product/addcomm/",
    12.         data: postData,
    13.         dataType: 'json',
    14.         success: function(data) {
    15.                 alert(data['message']);
    16.             if(data['success']) {
    17.                 $('#contentComm'+id).val('');
    18.             }
    19.         }
    20.     });
    21. }
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну либо разберись либо могу переместить тему в раздел "сделайте за меня"
     
  8. Dilon

    Dilon Активный пользователь

    С нами с:
    4 май 2014
    Сообщения:
    119
    Симпатии:
    4
    Адрес:
    соседний двор
    Если можно, перенеси пожалуйста!