Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z Ajaxem
Forum PHP.pl > Forum > Po stronie przeglądarki
damianpsp2000
Witam.

Mam problem z ajaxem, natomiast robię walidację formularza rejestracji w jquery, wygląda on tak:

  1. $(document).ready(function(){
  2.  
  3. var status = true;
  4.  
  5. //REGISTER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  6. $('#submitv').click(function(){
  7.  
  8. var name = $('#namefirst_lastv');
  9. var name_error = $('#namefirst_lasterror');
  10. var age = $('#agev');
  11. var age_error = $('#ageerror');
  12. var email = $('#emailv');
  13. var email_error = $('#emailerror');
  14. var pass = $('#passwordv');
  15. var pass_error = $('#passworderror');
  16. var pass2 = $('#password2v');
  17. var pass2_error = $('#password2error');
  18.  
  19. if(name.val() == '<?php echo $lg['register_namefirst_last']; ?>'){
  20. name_error.html('<?php echo $lg['register_error1']; ?>');
  21. status = false;
  22. }
  23. else if(name.val().length < 5){
  24. name_error.html('<?php echo $lg['register_error3_name']; ?>');
  25. status = false;
  26. }
  27. else if(name.val().length > 40){
  28. name_error.html('<?php echo $lg['register_error4_name']; ?>');
  29. status = false;
  30. }
  31. else{
  32. name_error.html('<font style="color:green;"><?php echo $lg['register_text_ok']; ?></font>');
  33. }
  34. if(age.val() == '<?php echo $lg['register_age']; ?>'){
  35. age_error.html('<?php echo $lg['register_error1'] ?>');
  36. status = false;
  37. }
  38. else if(age.val().length < 1){
  39. age_error.html('<?php echo $lg['register_error3_age']; ?>');
  40. status = false;
  41. }
  42. else if(age.val().length > 3){
  43. age_error.html('<?php echo $lg['register_error4_age']; ?>');
  44. status = false;
  45. }
  46. else{
  47. age_error.html('<font style="color:green;"><?php echo $lg['register_text_ok']; ?></font>');
  48. }
  49. if(email.val() == '<?php echo $lg['register_email']; ?>'){
  50. email_error.html('<?php echo $lg['register_error1'] ?>');
  51. status = false;
  52. }
  53. else if(email.val().length < 7){
  54. email_error.html('<?php echo $lg['register_error3_email']; ?>');
  55. status = false;
  56. }
  57. else if(email.val().length > 80){
  58. email.error.html('<?php echo $lg['register_error4_email']; ?>');
  59. status = false;
  60. }
  61. else{
  62. email_error.html('<font style="color:green;"><?php echo $lg['register_text_ok']; ?></font>');
  63. }
  64. if(pass.val() == '<?php echo $lg['register_password']; ?>'){
  65. pass_error.html('<?php echo $lg['register_error1'] ?>');
  66. status = false;
  67. }
  68. else if(pass.val().length < 5){
  69. pass_error.html('<?php echo $lg['register_error3_pass']; ?>');
  70. status = false;
  71. }
  72. else if(pass.val().length > 25){
  73. pass_error.html('<?php echo $lg['register_error4_pass']; ?>');
  74. status = false;
  75. }
  76. else{
  77. pass_error.html('<font style="color:green;"><?php echo $lg['register_text_ok']; ?></font>');
  78. }
  79. if(pass.val() != pass2.val()){
  80. pass2_error.html('<?php echo $lg['register_error2']; ?>');
  81. status = false;
  82. }
  83. else{
  84. pass2_error.html('<font style="color:green;"><?php echo $lg['register_text_ok']; ?></font>');
  85. }
  86. if(status == true){
  87. $.ajax({
  88. type: "GET",
  89. data: "name=damian",
  90. url: "register_create.php",
  91. success: function(msg){
  92. $('#register_error').html('...');
  93. },
  94. error: function(msg){
  95. $('#register_error').html('nie wiem!');
  96. }
  97. });
  98. }
  99. return false;
  100. });
  101.  
  102.  
  103. });



tutaj formularz:

  1. <form id="register_form" action="" method="post">
  2. <input class="register_input" type="text" autocomplete="off" id="namefirst_lastv" name="namefirst_last" value="<?php echo $lg['register_namefirst_last'] ?>" onClick="if(this.value == defaultValue)value=''" onBlur="if(this.value == '')this.value = defaultValue"/><span class="register_error" id="namefirst_lasterror"></span><br />
  3. <input class="register_input" type="text" autocomplete="off" id="agev" name="age" value="<?php echo $lg['register_age'] ?>" onClick="if(this.value == defaultValue)value=''" onBlur="if(this.value == '')this.value = defaultValue"/><span class="register_error" id="ageerror"></span><br />
  4. <input class="register_input" type="text" autocomplete="off" id="emailv" name="email" value="<?php echo $lg['register_email'] ?>" onClick="if(this.value == defaultValue)value=''" onBlur="if(this.value == '')this.value = defaultValue"/><span class="register_error" id="emailerror"></span><br />
  5. <input class="register_input" type="text" autocomplete="off" id="passwordv" name="password" value="<?php echo $lg['register_password'] ?>" onClick="this.type = 'password'; if(this.value == defaultValue)value=''" onBlur="if(this.value == '')this.value = defaultValue; if(this.value == defaultValue || this.value == '')this.type='text'"/><span class="register_error" id="passworderror"></span><br />
  6. <input class="register_input" type="text" autocomplete="off" id="password2v" name="password2" value="<?php echo $lg['register_password2'] ?>" onClick="this.type = 'password'; if(this.value == defaultValue)value=''" onBlur="if(this.value == '')this.value = defaultValue; if(this.value == defaultValue || this.value == '')this.type='text'"/><span class="register_error" id="password2error"></span><br />
  7. </form>
  8. <input class="register_submit" type="submit" id="submitv" name="submit" value="<?php echo $lg['register_submit'] ?>"/><br /><br />
  9. <span class="register_error" id="register_error"></span>



oraz plik register_create.php

  1. <?php
  2. echo 'test...';
  3. ?>



dlaczego ajax nie działa? Próbowałem pisać w pliku register_create.php np.

  1. <?php
  2. header('location: ?site=index&asd=asd');
  3. ?>


ale też nie działa.

Proszę o pomoc.
Pozdrawiam.
viking
A co to znaczy "nie działa"? Na oko nie robisz nic z domyślną akcją inputa więc pewnie wysyła standardowo formularz.
IceManSpy
1. Nie rób submita, bo on przeładuje przeglądarkę. Daj tam zwykły przycisk i o jQuery'uj go (click).
2. Nie przesyłasz żadnych danych przez AJAXa.
damianpsp2000
input type submit jest po za <form> więc nie przeładuje. Skrypt obecny można zobaczyć tutaj:
http://damianpsp.xaa.pl/our/?site=index

klikając na zarejestruj się na górze strony.
Chcę zrobić, że jak będzie all ok (czyli zmienna w js bedzie rowna true) to do bazy danych dodaje usera, jak to przesłać?

w sumie dopiero zaczynam z jquery.
nospor
ajaxa wysylasz na taki link:
http://damianpsp.xaa.pl/our/register_create.php?name=damian
a przecież on nie istnieje....

weź korzystaj z FIREBUG w FIREFOX bo latasz po forach z takimi pierdułami ze glowa mała wink.gif No pewne rzeczy powinieneś na dzien dobry rozwiązywać sam a dopiero przy ciut trudniejszych rzeczach lecieć na forum smile.gif
damianpsp2000
if(status == true){
var name_space = name.val().split(' ');
var age_val = age.val();
var email_val = email.val();
var pass_val = pass.val();
$.get('site/register_create.php', { first-name: ""+name_space[0], last-name: ""+name_space[1], age: ""+age_val, email: ""+email_val, password: ""+pass_val });
}


dlaczego to nie chce działać? jakos zmienne zle zapisuje?
nospor
Zainstaluj FIREBUG jak cię prosiłem, a zobaczysz czemu ci nie działa..... no szanuj nasz czas.
damianpsp2000
szanuję ale Ty pisząc tutaj to teraz, mogłeś napisać o co tutaj chodzi i już...
Mam Chrome i nie chce zmieniać przeglądarki.
nospor
1) Skoro bawisz się ajaxem to wypadałoby by posiadać narzędzia do łatwej analizy. Takim narzędziem jest FIREBUG i jest on darmowy
2) Chrome też posiada konsole błędów.

Jak nie zaczniesz korzystać z takich narzędzi to temat ci zamknę. Forum nie służy do wskazywania rzeczy, które user może zobaczyć sam.

ps: first-name - tu masz między innymi błąd. Nie możesz w nazwach używać myślnika bo to jest ni mniej ni więcej minus. Używaj pokreślenia: first_name
Jakbyś użył narzędzia o którym wspomniałem, to ten błąd byś miał pokazany.
damianpsp2000
mam w register_create.php taki skrypt:
  1. <?php
  2. include('../functions/db_connect.php');
  3. mysql_query("INSERT INTO users (first-name, last-name, age, email, password, date) VALUES ('".$_GET['first_name']."', '".$_GET['last_name']."', '".$_GET['age']."', '".$_GET['email']."', '".md5($_GET['password'])."', '".date('d.m.Y H:i:s')."')");
  4. $query = "SELECT * FROM users ORDER BY date DESC LIMIT 1";
  5. $result = mysql_fetch_array(mysql_query($query));
  6. $_SESSION['login'] = $result['id'];
  7. ?>


dane $_GET przesyłam ajaxem i nie wiem nie dodaje do bazy danych, tak wyglada ajax:

  1. $.get('site/register_create.php', { first_name: ""+name_space[0], last_name: ""+name_space[1], age: ""+age_val, email: ""+email_val, password: ""+pass_val });
  2. window.location.href = "?site=index";



prosze o help:)
nospor
Po pierwsze wywal to:
window.location.href = "?site=index";
Bo robisz od razu przekierowanie i nic nie widzisz

Po drugie: zacznij w koncu używać tego o co prosiłem, bo błąd masz tam podany jak na dłoni

zgodnie z umową zamykam.

edit:otwieram
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.