Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [JavaScript] Przesyłanie zmiennych z formularza przez js do php
renault12
post 25.07.2010, 10:41:39
Post #1





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


Witam,

Mam problem z przesylaniem danych z formularza do php metoda js. Chce przeslac login i email dynamicznie do php, mam pewna funkcje w js ktora przy jednym parametrze chodzi dobrze ale ja wlasnie chce przeslac i login i email przez ta funkcje i tu robi sie problem. Wie ktos moze co moze byc zle? Takim kodem ktorego zaraz przedstawie sprawdza mi tylko login a chcialbym zeby sprawdzilo tez poprawnosc email.


[JAVASCRIPT] pobierz, plaintext
  1. var myAjax6 = new Ajax.Request('reg.php', {
  2. method: 'post',
  3. parametrs: "email=" + email,
  4. onSuccess: function(showResponse){
  5. errorResults.innerHTML = showResponse.responseText;
  6. }
  7. });
  8. var myAjax5 = new Ajax.Request('reg.php', {
  9. method: 'post',
  10. parameters: "login=" + login,
  11. onSuccess: function(showResponse){
  12. errorResults.innerHTML = showResponse.responseText;
  13. }
  14. });
[JAVASCRIPT] pobierz, plaintext


  1. $login = $_POST['login'];
  2. $email = $_POST['email'];
  3. $znaki = strlen($login);
  4. $zap = mysql_query("SELECT login FROM users WHERE login = '$login'") or die (mysql_error());
  5. $ile = mysql_num_rows($zap);
  6. if ($login != '') {
  7. if ($znaki >= 5 && $znaki <= 16) {
  8. if ($ile>0)
  9. {
  10. echo $email . '<font color="red">Błąd w formularzu.</font>';
  11. }
  12. } else {
  13. if ($znaki < 5)
  14. {
  15. echo 'Błąd w formularzu.';
  16. } else {
  17. if ($znaki > 16) {
  18. echo 'Błąd w formularzu.';
  19. }
  20. }
  21. }
  22.  
  23. if ($email != '')
  24. {
  25. if(strstr($email,'@'))
  26. {
  27. echo '';
  28. } else {
  29. if (strlen($email) < 6) {
  30. echo 'Niepoprawny adres email';
  31. } else {
  32. echo 'Niepoprawny adres email';
  33. }
  34. }
  35. }
  36. }


Proszę o pomoc
Go to the top of the page
+Quote Post
thomson89
post 25.07.2010, 10:59:28
Post #2





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Nie męcz się w JS. Przestaw się na jQuery. Naprawdę ułatwia to życie.

Przykład:
[JAVASCRIPT] pobierz, plaintext
  1. var login = $('#login').val();
  2. var pass = $('#pass).val();
  3.  
  4. $.post("reg.php", { login: login, pass: pass}, //nazwa zmiennej dla php : wartosc
  5. function(result){ //co ma sie dziać po wykonaniu
  6.  
  7. $('#wynik').html(result); //to co zwróci php przekazałem do diva wynik (zwróci w sensie funkcji echo po stronie php)
  8.  
  9. });
[JAVASCRIPT] pobierz, plaintext


Ten post edytował thomson89 25.07.2010, 10:59:41


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
renault12
post 25.07.2010, 14:42:00
Post #3





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


A w jaki sposob moge przeslac zmienna z php do js aby potem móc ja odczytac ?
Go to the top of the page
+Quote Post
thomson89
post 25.07.2010, 15:05:43
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Na powyższym przykładzie, wystarczy że dasz w skrypcie PHP:
  1. echo $zmienna


I ona będzie zawarta w zmiennej result już po stronie JS.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
renault12
post 25.07.2010, 15:44:50
Post #5





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


No a jesli juz mam jakis tekst w echo i jak dodam do tego tekstu jeszcze zmienna to potem bym musial rozbijac ten ciag znakow, nie da sie tego jakos oddzielnie przeslac?
Go to the top of the page
+Quote Post
thomson89
post 25.07.2010, 15:58:43
Post #6





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Zobacz funkcję.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 16:22:48
Post #7





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Straszna kaszana w tym twoim źródle. Nie wiem czy dobrze zrozumiałem ale chcesz wysłać login i email do serwera, sprawdzić je i odesłać odpowiedź za pomocą Ajaxa? Jeśli tak to za pomocą jQuery i kawałka kodu można zrobić to tak:
Przykładowy HTML:
  1. <form action='js.php' method='post' id='myForm'>
  2. <input type='text' name='form[login]' id='login' />
  3. <input type='text' name='form[email]' id='email' />
  4.  
  5. <input type='submit' >Wyślij</input>
  6. </form>

Kierunek JS -> PHP metoda POST, dane zwracamy za pomocą JSON :
  1. $form = $_GET['form'];
  2.  
  3. if (strlen($form['login'])>=6 && strlen($form['login'])<16 && filter_var($form['email'], FILTER_VALIDATE_EMAIL))
  4. $response['status'] = true;
  5. $reponse['message'] = 'Przyjęto dane';
  6. } else {
  7. $response['status'] = false;
  8. $reponse['message'] = 'Dane w formularzu są błędne, spadaj';
  9. }
  10.  
  11. echo json_encode($response);

I kod JS:
[JAVASCRIPT] pobierz, plaintext
  1. $('#myForm').submit(function() {
  2. data = $(this).serialize(); // zamieniamy dane z formularza w string
  3. $.post($(this).attr('action'),data,function(result) {
  4. // dane otrzymujemy w postaci obiektu result (zwykły obiekt JS, pola takie jak w naszym arrayu php
  5. typeClass = (result.status) ? 'good':'error'; //klasy stylujące w zależności od wyniku
  6. msgbox = $("<div style='position:absolute;top:30%;left:45%; z-index:1000' />");
  7. msgbox.addClass(typeClass);
  8. msgbox.text(result.message); //wstawiamy komunikat
  9. $('body').append(msgbox); //pokazujemy diva z komunikatem
  10. },'json'); //json oznacza jak jQuery ma traktować odpowiedź z serwera
  11. });
[JAVASCRIPT] pobierz, plaintext


Oczywiście div msgbox jest niedopracowany (nie można go zamknąć) ale to już twoja działka. Jeśli nie przeszkadza ci nadmiar kodu JS to możesz zainteresować się jQuery UI.

Ten post edytował everth 25.07.2010, 16:32:18


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 25.07.2010, 17:04:26
Post #8





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


No mniej więcej mi o coś takiego chodziło, później to pod siebie zmodyfikuje.

Aaaa mam jeszcze jeden problem, z pliku php do js zwracam zmienna przez echo pod taka postacią js:


[JAVASCRIPT] pobierz, plaintext
  1. $('#errorResults').html(result);
[JAVASCRIPT] pobierz, plaintext


Tekst normalnie się wyświetla ale kiedy robie naprzyklad taki warunek nie śmiga

[JAVASCRIPT] pobierz, plaintext
  1. function(result){
  2. if ($.html(result) == '') {
  3. //kod
  4. }
  5. }
[JAVASCRIPT] pobierz, plaintext


Potrzebuję tego warunku dlatego ze chce sprawdzic czy w zmiennej jest jakis tekst, jesli jest to ma sie wywolac jakas funkcja no ale takowo sie nie dzieje : /

Ten post edytował renault12 25.07.2010, 17:06:18
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 17:24:45
Post #9





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Jeśli 'result' jest wynikiem funkcji echo w PHP to jest w JS interpretowane jako string, czyli nie $.html(result)==coś bo jakbyś zobaczył do api jquery to funkcja html z parametrem służy do dodawania zawartości (choć da się ją wykorzystać do porównania). Sprawdzasz zmienną result czyli:
[JAVASCRIPT] pobierz, plaintext
  1. if (typeof(result)==undefined || result=='') {...}
[JAVASCRIPT] pobierz, plaintext


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 25.07.2010, 18:13:57
Post #10





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


Coś nie działa :/ Nie wiem gdzie jest błąd, zobacz sam:

[JAVASCRIPT] pobierz, plaintext
  1. $.post("reg.php", { login: login, email: email, haslo: haslo, re_haslo: re_haslo},
  2. function(result){
  3. $('#errorResults').html(result);
  4. });
  5. if (typeof(result)==undefined || result=='') {
  6. var divstyle = new String();
  7. divstyle = document.getElementById("txt2").style.visibility;
  8. divstyle = document.getElementById("sukces").style.visibility;
  9. if(divstyle.toLowerCase()=="visible" || divstyle == "")
  10. {
  11. document.getElementById("txt2").style.visibility = "hidden";
  12. document.getElementById("sukces").style.visibility = "visible";
  13. }
  14. }
[JAVASCRIPT] pobierz, plaintext


Ten post edytował renault12 25.07.2010, 18:14:34
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 18:59:51
Post #11





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Jak masz tak pisać to lepiej nie pisz w ogóle. To jest jeszcze gorsza kasza niż na początku, nie ma prawa działać: nadpisywana zmienna divstyle tak że w końcu nie wiadomo co ona reprezentuje (txt2, sukces? a może String()?), a skoro dodałeś już jQuery to zacznij z niego korzystać - wygoda i czystość kodu. Poniżej masz to trochę przerobione (na ile zrozumiałem co to w ogóle robi), zapoznaj się z jQuery i spróbuj to przepisać
[JAVASCRIPT] pobierz, plaintext
  1. $.post("reg.php", {
  2. login : login,
  3. email : email,
  4. haslo : haslo,
  5. re_haslo : re_haslo
  6. }, function(result) {
  7. showMsgBox(result); // ta funkcja musi zostać wywołana w tym miejscu
  8. });
  9.  
  10. function showMsgBox(result) {
  11. $('#errorResults').html(result);
  12.  
  13. if (typeof (result) == undefined || result == '') {
  14. elems = $("#txt2, #sukces");
  15. elems.show(); // pokazuje elementy txt2 i sukces (chyba o to ci chodzi)
  16.  
  17. // if (divstyle.toLowerCase() == "visible" || divstyle == "") {
  18. // document.getElementById("txt2").style.visibility = "hidden";
  19. // document.getElementById("sukces").style.visibility = "visible";
  20. // } NIE MAM POJĘCIA CO TO ROBI
  21. }
  22. }
[JAVASCRIPT] pobierz, plaintext


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 25.07.2010, 19:15:53
Post #12





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


nooo i elegancko smigaaa, dzieki. A to te txt2 to div pod którym jest formularz. Jeśli tamten warunek się spełni to on się chowa i pokazuje div sukces który wypisuje wynik. A skad u Ciebie takie zamilowanie do tej kaszy haha.gif
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 19:28:30
Post #13





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Jak zaczniesz pracować z kodem stworzonym przez innych to z czasem zrozumiesz moją niechęć do "kaszy" winksmiley.jpg


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 27.07.2010, 11:43:39
Post #14





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


Nie chce zakladac nowego tematu wiec pisze tutaj bo znowu mam problem dziwny troche bo chodzi o to że w powyższym kodzie na poprzednim hostingu wszystko chodzilo bez zarzutu, a kiedy przelozylem sie na 000webhosting nie skrypt nie przechodzi przez ten warunek :

[JAVASCRIPT] pobierz, plaintext
  1. if (typeof (result) == undefined || result == '') {
[JAVASCRIPT] pobierz, plaintext


Co moze byc nie tak?
Go to the top of the page
+Quote Post
everth
post 27.07.2010, 12:41:46
Post #15





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Sprawdź zmienną result - czasem przeglądarki (zwłaszcza IE) zwracają różne wartości dla pustych zmiennych. Tutaj może być false,null,undefined (niekiedy pokazywana jako typ, innym razem jako string).
Przed warunkiem
[JAVASCRIPT] pobierz, plaintext
  1. alert(result);
[JAVASCRIPT] pobierz, plaintext

I zobacz co ci zwraca - dodaj to do warunku

Ten post edytował everth 27.07.2010, 12:42:10


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 27.07.2010, 13:08:42
Post #16





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


I przed warunkiem i w warunku nic nie zwraca w alercie
Go to the top of the page
+Quote Post
everth
post 27.07.2010, 14:03:51
Post #17





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Rozbuduj warunek
[JAVASCRIPT] pobierz, plaintext
  1. (typeof(result)==undefined || result=null | result ==false || result=='') //albo to
  2. (!result || result=='') //albo to
[JAVASCRIPT] pobierz, plaintext


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 27.07.2010, 20:44:35
Post #18





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


Też nic z tego :/
Go to the top of the page
+Quote Post
everth
post 28.07.2010, 09:56:09
Post #19





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


To wrzuć to co podałem w nawiasach jako warunek w alert() i zobacz czy zwraca true czy false.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
renault12
post 28.07.2010, 12:48:02
Post #20





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 9.01.2010

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


false
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 21.05.2024 - 10:52