Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] podwojne ladowanie danych
Forum PHP.pl > Forum > Przedszkole
cybor77
  1. $(function(){
  2. $('#submit').click(function(){
  3. $('#container').append('<img src="img/loading.gif" alt="laduje" id="loading" />');
  4.  
  5. var name = $('#name').val();
  6. var email = $('#email').val();
  7. var comments = $('#comments').val();
  8.  
  9. $.ajax({
  10. url: 'submit_to_db.php',
  11. type: 'POST',
  12. data: 'name=' + name + '&email=' + email + '&comments=' + comments,
  13.  
  14. success: function(result){
  15. $('#response').remove();
  16. $('#container').append('<p id="response">' + result + '</p>');
  17. $('#loading').fadeOut(500, function() {
  18. $(this).remove();
  19. });
  20. }
  21. });
  22. return false;
  23. });
  24. });


witam, mam taki kodzik, dziala mi to poprawnie, ale jest problem. po kliknieciu zamiast sie odswiezac to dodaje sie nowe pole.

czyli cos takiego:

Kod
1. jeden


dodaje dwa

i jest

Kod
1. jeden
2. dwa

1. jeden


dodaje trzy i jest

Kod
1. jeden
2. dwa
3. trzy

1. jeden
2.dwa

1. jeden


zamiast:
Kod
1. jeden
2. dwa
3. trzy


malo sie znam na AJAXie dlatego prosze powiedziec co trzeba zmienic
Fifi209
Bo dopisujesz, musiałbyś najpierw wyczyścić #container a potem wprowadzać dane

wystarczy

$("#container").html(' ');
cybor77
ale nie moge wyczyscic containera, bo wtedy mi caly formularz zniknie ;/
to jest tak zrobione:

  1. <form method="post" action="submit_to_db.php">
  2.  
  3. <div id="container">
  4. <label for="name">Name</label>
  5. <input type="text" name="name" id="name" />
  6.  
  7. <label for="email">Email Address</label>
  8. <input type="text" name="email" id="email" />
  9.  
  10. <label for="comments">Comments/Concerns</label>
  11. <textarea rows="5" cols="35" name="comments" id="comments"></textarea>
  12. <br />
  13. <input type="submit" name="submit" id="submit" value="Go!" />
  14.  
  15. </div>
  16. </form>
Fifi209
To usuń i dodaj, ew. usuń wszystkie znaczniki p w container
cybor77
a moglbys napisac jak to zrobic? bo nie mam pomyslu. jak usuwam, a potem robie znowu append to w ogole nie dziala i nawet sie do bazy nie dodaje.
a drugi sposob probowalem usuwac tak $("#container p").html(' '); ale tez nie dzialalo
Fifi209
Mój błąd. Wywal formularz poza container (zrób mu jakiegoś innego div'a) tak, abyś mógł container cały czyścić.
cybor77
dzieki za pomoc smile.gif

a moglby ktos jeszcze wytlumaczyc na jakies zasadzie to dziala?

bo mam takie cos:

  1. $.ajax({
  2. url: 'submit_to_db.php',
  3. type: 'POST',
  4. data: 'name=' + name + '&email=' + email + '&comments=' + comments,


i oczywiscie
  1. <form method="post" action="submit_to_db.php">

plik submit_to_db.php odbiera dane przez POST i nie ma tam zadnego podzialu na ajax/php tylko jest samo PHP, wiec po co tutaj sie wysyla 2 razy POSTa?
Fifi209
Takie coś ma jedynie zastosowanie dla przeglądarek nieobsługujących javascript.
Formularz nie powinien zostać przesłany dwa razy - to błąd!
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.