Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][PHP] Wyświetlenie danych dodanych do formularza
Forum PHP.pl > Forum > XML, AJAX
Entaro
Witam.
Chciałbym przechwycić za pomocą jQery dane wysyłane z formularza i następnie wyświetlić je za pomocą metody echo w PHP. Ma to dziać się bez przeładowania strony.
Mam formularz który wysyła dane.
  1. <form id="submit" method="post">
  2. <legend>Enter Information</legend>
  3. <label for="fname">Imie:</label>
  4. <input id="fname" class="text" name="fname" size="20" type="text" />
  5.  
  6. <label for="lname">Nazwisko:</label>
  7. <input id="lname" class="text" name="lname" size="20" type="text" />
  8.  
  9. <button class="button positive"> Add Client </button>
  10. </form>


Oraz funkcje która ma przechwytywać wartości z formularza
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $("form#submit").submit(function() {
  4.  
  5. var fname = $('#fname').attr('value');
  6. var lname = $('#lname').attr('value');
  7.  
  8. $.ajax({
  9. type: "POST",
  10. url: "test.php",
  11. data: "fname="+ fname +"& lname="+ lname,
  12. success: function(){
  13. $('form#submit').hide();
  14. $('div.success').fadeIn();
  15. }
  16. });
  17. return false;
  18. });
  19. });

Następnie sprawdzam czy zmienne zostały.
  1. <?php
  2. if(!isset($_POST['fname'])){
  3. $fname = $_POST['fname'];
  4. }
  5.  
  6. if(!isset($_POST['lname'])){
  7. $lname = $_POST['lname'];
  8. }
  9. ?>

I staram się wyświetlić dane dodanego klienta
  1. <div class="success" style="display:none;">Klient<?php if(!isset($fname)){
  2. echo $fname;
  3. }
  4. if(!isset($lname)){
  5. echo $lname;
  6. }
  7. ?> został dodany.</div>


Jednak nic się nie dzieje skrypt niby się wykonał bo formularz znika ale nie przypisuje danych. Może ktoś poradzi co robię źle?
askone
Hej


Według mnie brakuje:
  • określenia typu danych jakie będą zwracane ze skryptu test.php (domyślnie to html lub xml, ale możesz chcieć np json). A więc koniecznie dopisz dataType: json,
  • skrypt test.php musi zwrócić wynik swego działania do skryptu macierzystego, z którego został wywołany. A więc musi być echo($result). A w $result wrzuć dane jakie mają być zwracane (format np. json).
  • wydaje mi się, że w formularzu brakuje submita. Niby masz przycisk, oprogramowujesz onsubmit, ale gdzie powiązanie kliknięcia w przycisk ze zdarzeniem on submit?? Dwa rozwiązania:
    • Kod
      <form onsubmit="submit();return false;" action="" method="post">
    • Kod
      <input type="button" onclick="submit();">
To chyba na tyle, mam nadzieję, że pomogłem smile.gif
vokiel
  1. if(isset($_POST['fname'])){
  2. $fname = $_POST['fname'];
  3. }
  4. if(isset($_POST['lname'])){
  5. $lname = $_POST['lname'];
  6. }


! to zaprzeczenie, czyli if (!isset()) oznacza jeśli nie jest ustawiony
Entaro
Dzięki za wskazanie błędów. Wystarczyła zmiana typu danych na Json, oraz usunięcie mojego głupiego błędu z postawieniem ! przed isset
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.