Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP][JQUERY] ponowne wykonanie zapytania
Forum PHP.pl > Forum > XML, AJAX > AJAX
shl
Witam

Jest na stronie formularz by dodac maila do Newslettera.

  1. <div id="boxodp"></div>
  2. <form method="post" id="form">
  3. <input name="mail" type="text" size="30" /><br />
  4. <input id="btn" type="button" value="Zapisz">
  5. </form>


Po wyslaniu

  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('#btn').click(function(){
  4. $('#boxodp').load('data.php', $('#form').serializeArray());
  5. $('div#boxodp').addClass('red');
  6. });
  7. });
  8. </script>


do pliku data.php

  1. $email = $_POST["mail"];
  2. if ($email == "")
  3. { echo "Nie podano adresu email"; }
  4. else {
  5. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  6. { echo "Wprowadzony adres jest niepoprawny";}
  7.  
  8. else
  9. {
  10. echo "Dodano adres do Newslettera"; }
  11. }


Wyskakuje mi nad formularzem napis co sie stalo ( nie podanao adresu, bledny adres, albo ze dodal adres)
Teraz moje pytanie jak zrobic ... by w dwoch pierwszych akcjach bylo tak jak jest ... czyli pojawia sie okienko ze jest problem ...
ale w momencie gdy adres bedzie dobry zeby nadac inny styl napisowi ze wszystko jest ok i dodatkowo np: wyczyscic formularz, albo calkowicie zeby go usunac (schowac). Nie potrafie przekazac z PHP do JS informacji o tym co ma zrobic ? sad.gif

Nikt nie moze pomoc? smile.gif wiec probuje dalej sam

Mialem taki pomysl ze po wyslaniu zapytania po sprawdzeniu danych zamieniac calego div'a z formularzem. Jesli jakis blad to daje jeszcze raz formularz z opisem bledu, jesli wszystko OK sam napis ze OK bez formularza. I wszystko fajnie dziala ale ... no wlasnie musi byc to ale ...

Dziala tylko za pierwszym razem, czyli wysyla do serwera zapytanie serwer odpowiada, wypluwa np: formularz i ze jest blad ... i nie da sie juz kliknac drugi raz sad.gif i nie wiem czemu

Tak zmienilem funkcje wysylania
  1. $(document).ready(function(){
  2. $('#btn').click(function(){
  3. $.post('data2.php', $('#form').serializeArray(), function(data){$('#formnews').html(data).fadeIn('normal'); });
  4. });
  5. });
  6. </script>


Tu kod w html
  1. <div id="formnews">
  2. <form method="post" id="form"><input name="mail" type="text" size="30" /><br />
  3. <input id="btn" type="button" value="Zapisz">
  4. </form>
  5. </div>


i plik data2.php do ktorego leci zapytanie

  1. $email = $_POST["mail"];
  2. if ($email == "") { echo "
  3. Nie Podano adresu <br>
  4. <form method=\"post\" id=\"form\"><input name=\"mail\" type=\"text\" size=\"30\" /><br />
  5. <input id=\"btn\" type=\"button\" value=\"Zapisz\">
  6. </form>
  7. ";
  8. }
  9. else {
  10. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  11. { echo "
  12. Błąd w adresie <br>
  13. <form method=\"post\" id=\"form\"><input name=\"mail\" type=\"text\" size=\"30\" value=\"$email\"/><br />
  14. <input id=\"btn\" type=\"button\" value=\"Zapisz\">
  15. </form>
  16. ";}
  17.  
  18. else
  19. {
  20. echo "Dodano adres do Newslettera"; }
  21. }


Moze ktos pomoc, naprowadzic na rozwiazanie?
sebekzosw
Ja zrobiłbym to na $.getJSON() w jQuery i json_encode w PHP - wtedy wysyłasz wybrany tekst, status i co tam chcesz i możesz łatwo to w jQuery tym zarządzać:

  1. <div id="boxodp"></div>
  2. <form method="post" id="form">
  3. <input name="mail" id="mail" type="text" size="30" /><br />
  4. <input id="btn" type="button" value="Zapisz">
  5. </form>



  1. $.getJSON('data.php', { nazwa: $("#mail").val() }, function(data)
  2. {
  3. $('#boxodp').html(data.komunikat);
  4. $('#boxodp').css('border-color', data.kolor);
  5. });


A w pliku data PHP generujesz odpowiedni plik, który zawiera
$zmienna['komunikat'] = 'tresc komunikatu';
$zmienna['kolor'] = '#FF0000';
$zmienna['status'] = '0';

a potem w PHP:
  1. echo json_encode($zmienna);



  1. $email = $_POST["mail"];
  2. if (empty($email))
  3. {
  4. $wynik['komunikat'] = "Nie podano adresu email";
  5. $wynik['kolor'] = 'red';
  6. $wynik['status'] = 0;
  7. }
  8. else
  9. {
  10. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  11. {
  12. $wynik['komunikat'] = "Wprowadzony adres jest niepoprawny";
  13. $wynik['kolor'] = 'red';
  14. $wynik['status'] = 0;
  15. }
  16. else
  17. {
  18. $wynik['komunikat'] = "Dodano adres do Newslettera";
  19. $wynik['kolor'] = 'green';
  20. $wynik['status'] = 1;
  21. }
  22. }
  23. echo json_encode($wynik);

myślę, że sobie poradzisz smile.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.