[js / php] alert javascript po header location

0

Witam was ponownie:)

Mam problemik: czy jest możliwość wyświetlenia alertu w tej samej funkcji po wykonaniu kodu header location w php?
Wiem że najpierw jest wykonywani skrypt po stronie serwera dopiero potem po stronie przeglądarki. I tu pojawia się mój problem.

Wysyłam dane po poście i potem po wykonaniu forma wyświetlam komunikat w js, ale dane dalej siedzą w poście... mogę dać header location, i strona jest Od razu przeładowana i danych nie ma już w $_POST, ale nie wyświetla się wtedy sktypt js, mogę zakomentować header location i w js dać window.location.href = coś tam ale wtedy mam podwójne przeładowanie strony... 1 w momencie wysłania danych po poście i przed wyświetleniem komunikatu, a drugie po kliknięciu ok na komunikacie z js... jak temu zaradzić? są jakieś rozwiązania?

mój przykładowy fragment kodu z wykorzystaniem header location wygląda tak:

elseif ($glosowal == "tak") {
                            header('Location: http://' . $host . '/uzytkownik/' . $_GET['kto'] . '');
                            //komunikat ze glosowal i przekierowanie
                            $msg = "Już głosowałeś na ten utwór!"; 
                            $USER->PromptChannel($msg, $host, $_GET['kto']);  //tu funkcja wyświetlająca komunikat
                        }

a funkcja wygląda tak:

function PromptChannel($msg, $host, $user)
    {
        echo "<script type='text/javascript'>$.prompt('<center>$msg</center>');</script>";
        //$komunikat = <<< SCRIPT
        //                            <script type='text/javascript'>
        //                            $.prompt('<center>$msg</center>',
        //                            {
        //                                buttons:
        //                                {
        //                                    Ok:"http://$host/uzytkownik/$user",
        //                                },
        //                                callback:function(buttonVal)
        //                                {
        //                                    if(buttonVal != undefined )
        //                                    {
        //                                    window.location.href = buttonVal;
        //                                    }
        //                                    else
        //                                    window.location.href="http://$host/uzytkownik/$user";
        //                                }
        //                            });
        //                            </script>
        //SCRIPT;
        //        echo $komunikat;
    }

w funkcji zakomentowany kod to kod js z przekierowanie, a odkomentowane echo to js bez przekierowania wtedy gdy używam header location w php (jak w przykładzie wyżej)
W tym przykładzie mam header location i chce aby ten odkomentowany komunikat się wyświetlił ale go nie wyświetla... a gdy zakomentuje header location i odkomentuję ten komunikat w funkcji to wtedy mam przekierowanie po kliknięciu ok ale z podwójnym przeładowaniem jak mowilem wcześniej....

Jakieś pomysły? czekam na podpowiedzi i pozdrawiam

0

lepiej powiedz co ty chcesz zrobić, bo ja ni w ząb nie wiem po co tak kombinujesz o_O

0

przy zapisie jakichkolwiek danych na serwer chce dać komunikat czy zapis się powiódł czy nie, i chce to zrobić za pomocą javascriptowego komunikatu, alertu.
Wszystko ładnie pięknie tylko jak daję komunikat to dane po zapisie zostają w POST'cie i po odświeżeniu strony F5 chce ponownie wysyłać formularz. A jak dam heder Locatin w php to owszem, usunie mi łądnie dane z POST'a i po odświeżeniu F5 nic się nie dzieje, czyli jak być powinno, ale nie wyświetla mi już komunikatu javascriptowego... I nie wiem jak to pogodzić ze sobą...

najprościej mówiąc mam kod:

if (!$query) {   //jak się nie wykonało zapytanie
                //header('Location: http://' . $host . '/uzytkownik/' . $_GET['kto'] . '/edit');
                $msg = "Problem z dodaniem obrazka do bazy. Spróbuj ponownie.";  //przyjmuje treść wiadomości
            } else { //jak wszystko poszło ok to
                //header('Location: http://' . $host . '/uzytkownik/' . $_GET['kto'] . '/edit');
                $msg = "Avatar został pomyślnie zmieniony.";
            }
            echo "<script type='text/javascript'>$.prompt('<center>$msg</center>');</script>"; //i wyświetlamy komunikat

W tym wypadku pokaże mi komunikaty ale nie usunie danych z POST'a które przekazywałem wcześniej gdzieś tam w kodzie do zapytania. Natomiast jak odkomentuję te header'y to usunie dane z POST'a (o co mi właśnie chodzi) ale nie wyświetli już komunikatów... I nie wiem jak to pogodzić...

0

już znalazłem rozwiązanie... poradziłem sobie w inny sposób... wszystko mieszał ten header, ale odkomentowałem go a komunikaty przypisałem do zmiennej sesyjnej. w głównym pliku php dałem kod wywołujący komunikat javascriptowy, który w treści przyjmował zapisany wcześniej do zmiennej sesyjnej tekst, a po komunikacie ustawiam zmienną sesyjną na pustą. A komunikaty oczywiście idą tylko wtedy gdy zmienna sesyjna nie jest pusta, czyli np:

if ($_SESSION['alert'] != "") {
//to echo komunikat w js
$_SESSION['alert'] = "";
}

Może komuś kiedyś przyda się to rozwiązanie.
Pozdrawiam

0

a słyszał kiedyś o ajaxie?

0

słyszał ale ajax mnie w tym momencie nie urządzał... musiałbyś zobaczyć co chcę zrobić bo jak to zrobić ajaxem to ja wiedziałem. ale nie o ten efekt mi chodziło... już rozwiązałem problem więc temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0