Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Działa - nie działa
Forum PHP.pl > Forum > Przedszkole
Kris1971
Witam szanownych Forumowiczów. Na początek małe wyjaśnienie - jeśli chodzi o js to moja wiedza jest praktycznie zerowa, ale staram się uczyć i czytać. Jak to wychodzi - cóż pewnie zobaczycie poniżej. Opierając się na kilku książkach i ... google.pl napisałem a raczej adoptowałem skrypty do strony. I po załadowaniu na serwer zadziałało. Ale po kilku godzinach już nie. Więc przerobiłem kod, załadowałem, zadziałało a potem ... znowu nie.

Najpierw skrypt obsługujący walidację formularza:
Kod
<script type="text/javascript">
    function SprawdzDane()
    {
    var imNaz = document.getElementById('pol1');
    var eMail = document.getElementById('pol2');
    var temat = document.getElementById('pol3');
    var tresc = document.getElementById('pol4');
    var kontr = document.getElementById('pol5');
    
    var imNazT = pol1.value;
    var eMailT = pol2.value;
    var tematT = pol3.value;
    var trescT = pol4.value;
    var kontrT = pol5.value;
    
    var err = false;
    
    if(imNazT == "") { pol1.style.backgroundColor = "#ffcaca";
    pol1.style.color = "red";
    pol1.placeholder = "Pole nie zostało wypełnione";
    
    err = true;
    } else {
    pol1.style.backgroundColor = "white";
    pol1.style.color = "#484848";
    pol1.style.fontWeight = "normal";
    }
    if(eMailT == "") { pol2.style.backgroundColor = "#ffcaca";
    pol2.style.color = "red";
    pol2.placeholder = "Pole nie zostało wypełnione";
    err = true;
    } else {
    pol2.style.backgroundColor = "white";
    pol2.style.color = "#484848";
    pol2.style.fontWeight = "normal";
    }
    if(tematT == "") { pol3.style.backgroundColor = "#ffcaca";
    pol3.style.color = "red";
    pol3.placeholder = "Pole nie zostało wypełnione";
    err = true;
    } else {
    pol3.style.backgroundColor = "white";
    pol3.style.color = "#484848";
    pol3.style.fontWeight = "normal";
    }
    if(trescT == "") { pol4.style.backgroundColor = "#ffcaca";
    pol4.style.color = "red";
    pol4.placeholder = "Pole nie zostało wypełnione";
    err = true;
    } else {
    pol4.style.backgroundColor = "white";
    pol4.style.color = "#484848";
    pol4.style.fontWeight = "normal";
    }
    if(err){
    alert("Proszę wypełnić wszystkie pola formularza!");} else {
                var http = new XMLHttpRequest();
                var tekst1 = document.getElementById("pol1").value;
                var tekst2 = document.getElementById("pol2").value;
                var tekst3 = document.getElementById("pol3").value;
                var tekst4 = document.getElementById("pol4").value;
                var tekst5 = document.getElementById("pol5").value;
                            var email = document.getElementById("pol2").value;
                            var re = /^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,4})$/i;
                                    if(email.match(re) == null) {
                                            alert('Wpisz poprawny adres e-mail!');
                                            pol2.style.backgroundColor = "#ffcaca";
                                            pol2.style.color = "red";
                                            pol2.style.fontWeight = "bold";
                                            pol2.value="";
                                            pol2.placeholder = "błędny format adresu";
                                            return false;
                                            }
                        var tekst6 = document.getElementById("pol6").value;
                        var chaptakontr = document.getElementById("chaptain").value;
                                    if(tekst6!==chaptakontr) {
                                            alert('Błędna wartość pola');
                                            pol6.style.backgroundColor = "#ffcaca";
                                            pol6.style.color = "red";
                                            pol6.style.fontWeight = "bold";
                                            pol6.value="";
                                            pol6.placeholder = "błędna wartość pola";
                                            return false;
                                    }
                var str = "pole1=" + tekst1 + "&pole2=" + tekst2 + "&pole3=" + tekst3 + "&pole4=" + tekst4 + "&pole5=" + tekst5;
                
var url = "wyslij.php";
http.open("POST", "http://kryoart.pl/wyslij.php", true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

http.onreadystatechange = function wyslijDane() {
    if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
            setTimeout(function(){ window.location.href = "index.php";
            }, 100);
    }
}
http.send(str);
    }}
    </script>


Potem jest skrypt do takiej mikro - captchy (a raczej do zamiany losowych znaków bez przeładowania strony)...
Kod
<script type="text/javascript">
    var XMLHttpRequestObject = false;
    if(window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
    }
    function pobierzDane()
    {
    if(XMLHttpRequestObject) {
    var p = document.getElementById("chapta");
    
    XMLHttpRequestObject.open("GET","http://kryoart.pl/dane1.php");
    XMLHttpRequestObject.onreadystatechange = function()
    {
    if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
    var powrot = XMLHttpRequestObject.responseText;
    p.innerHTML = (powrot);
    jQuery(function(){
                $("#chaptain").val(powrot);
        });
    }
    }
    XMLHttpRequestObject.send(null);
    }
    }
    </script>

Ze względów graficzno - estetycznych przy formularzu jest jeszcze taki skrypt:
Kod
<script type="text/javascript">
                var div = document.getElementById("chapta");
                var mytext =  document.getElementById("chaptain").value;
                div.textContent = (mytext);
                var text = div.textContent;
                </script>

A w jednym z elementów jest też skrypt
Kod
<script language="javascript" type="text/javascript">
    function playSound(soundfile) {
  document.getElementById("sg1").innerHTML=
    "<embed src=\""+soundfile+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
}
</script>
niezwiązany z formularzem.


I tak jak pisałem w nagłówku - działa - nie działa.
Problem zaczyna się już od alertu w pierwszym skrypcie - wysyła maila ale alert się nie pojawia ...
Help!!!
trueblue
  1. var imNaz = document.getElementById('pol1');
  2. var imNazT = pol1.value;


  1. var imNaz = document.getElementById('pol1');
  2. var imNazT = imNaz.value;
Kris1971
Nie działa co_jest.gif nie pomogło ....
to nie działa z pierwszego skryptu
Kod
alert(http.responseText);

potem nie zmienia wartości losowo pobranych z tabeli ...
nospor
O tu
var imNaz = document.getElementById('pol1');
pobierasz pole a nie jego wartosc.
Nie mozesz wiec robic porownania
if(imNazT == "")
gdyz pole istnieje, ale nie ma wartosci. Musisz wiec robic:
if(imNazT.value == "")

Analogicznie reszta.
Z ajaxem to nie ma poki co zwiazku. Przenosze na przedszkole
Kris1971
Dalej nie tu jest problem - wcześniej już mi weryfikowało poprawność pól - skrypt wykonuje się do poziomu wysyłania maila tyle że coś z "responseText" jest nie tak ...
nospor
Fakt, nie dolukalem ze potem robisz
var imNazT = pol1.value;
moja wina.
Kris1971
Jak wprowadziłem te poprawki to przestało walidować wypełnienie pól. Jest tak - http.responseText działa, ale nie wyświetla się okno dialogowe alertu z pobrana z pliku dane1.php treścią ... i nie działa
Kod
setTimeout(function(){ window.location.href = "index.php";
            }, 100);
nospor
Po czym stwierdzasz, ze http.responseText dziala, skoro nie wyswietla ci sie alert?

Zas co do poprawek to pisalem juz, ze sie pomyliłem smile.gif
Kris1971
jak zastąpię czymś responseText (np "wiadomość wysłana")- nie weryfikuje mi wypełnienia pól - nie wiem czy działa tylko mi się tak wydaje wstydnis.gif
kurcze - dziwne jest to że działało po zdefiniowaniu i bez żadnej ingerencji przestało ...
może łatwiej będzie Ci znaleźć błąd jak opiszę bardziej mechanizm.
Z tabeli losowo generuję 6 znaków - wpisują mi się w input "hidden" o id=chaptain oraz wyświetlają w div id="chapta".
Do chapty się przepisuje skryptem
Kod
<script type="text/javascript">
                var div = document.getElementById("chapta");
                var mytext =  document.getElementById("chaptain").value;
                div.textContent = (mytext);
                var text = div.textContent;
                </script>

Po kliknięciu w obrazek "jakiś tam"
poniższy skrypt zmienia mi wartości pól "chapta" i "chaptain"
Kod
<script type="text/javascript">
    var XMLHttpRequestObject = false;
    if(window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
    }
    function pobierzDane()
    {
    if(XMLHttpRequestObject) {
    var p = document.getElementById("chapta");
    
    XMLHttpRequestObject.open("GET","http://kryoart.pl/dane1.php");
    XMLHttpRequestObject.onreadystatechange = function()
    {
    if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
    var powrot = XMLHttpRequestObject.responseText;
    p.innerHTML = (powrot);
    jQuery(function(){
                $("#chaptain").val(powrot);
        });
    }
    }
    XMLHttpRequestObject.send(null);
    }
    }
    </script>

a wcześniejsza część skryptu weryfikuje pole "chaptain" z wpisanym do pola "pol6"
Kod
var tekst6 = document.getElementById("pol6").value;
                        var chaptakontr = document.getElementById("chaptain").value;
                                    if(tekst6!==chaptakontr) {
                                            alert('Błędna wartość pola');
                                            pol6.style.backgroundColor = "#ffcaca";
                                            pol6.style.color = "red";
                                            pol6.style.fontWeight = "bold";
                                            pol6.value="";
                                            pol6.placeholder = "błędna wartość pola";
                                            return false;
                                    } else {
                                            return true;
                                    }


no i działa ... nie wiem dlaczego ale działa - jedyne wytłumaczenie w mojej ocenie jest takie, że nastąpiło przemieszanie domen - pracowałem na tymczasowej subdomenie tmp.kryoart.pl a potem przeszedłem na domenę kryoart.pl i tu - mogłem nie zauważyć - przerzucało mnie na subdomenę a wtedy nie było responseText bo ono było przypisane do pełnej domeny ... nie wiem - chyba o to chodziło ... można temat zamknąć
no i jeszcze potem usunąłem to z powyższego skryptu
Kod
else {
                                            return true;
                                    }


nospor - dzięki serdeczne za pomoc - Twoje zapytanie zmusiło mnie do myślenia! biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.