![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie działa
![]() to nie działa z pierwszego skryptu Kod alert(http.responseText); potem nie zmienia wartości losowo pobranych z tabeli ... |
|
|
![]()
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 |
|
|
![]()
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 ...
|
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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 ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
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
![]() 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! ![]() Ten post edytował Kris1971 23.07.2014, 11:17:09 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:43 |