Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Działa - nie działa, Skrypt raz działa - raz nie działa
Kris1971
post 23.07.2014, 07:44:19
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2014

Ostrzeżenie: (0%)
-----


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!!!

Ten post edytował Kris1971 23.07.2014, 07:46:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
trueblue
post 23.07.2014, 07:46:59
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. var imNaz = document.getElementById('pol1');
  2. var imNazT = pol1.value;


  1. var imNaz = document.getElementById('pol1');
  2. var imNazT = imNaz.value;


--------------------
Go to the top of the page
+Quote Post
Kris1971
post 23.07.2014, 08:08:33
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2014

Ostrzeżenie: (0%)
-----


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 ...
Go to the top of the page
+Quote Post
nospor
post 23.07.2014, 08:12:05
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kris1971
post 23.07.2014, 08:23:33
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2014

Ostrzeżenie: (0%)
-----


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 ...
Go to the top of the page
+Quote Post
nospor
post 23.07.2014, 08:57:20
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Fakt, nie dolukalem ze potem robisz
var imNazT = pol1.value;
moja wina.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kris1971
post 23.07.2014, 09:06:53
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2014

Ostrzeżenie: (0%)
-----


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);


Ten post edytował Kris1971 23.07.2014, 09:08:25
Go to the top of the page
+Quote Post
nospor
post 23.07.2014, 09:09:01
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kris1971
post 23.07.2014, 11:12:36
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2014

Ostrzeżenie: (0%)
-----


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

Ten post edytował Kris1971 23.07.2014, 11:17:09
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:43