Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php, ajax - przesłanie danych
Forum PHP.pl > Forum > PHP
boosik01
Witam.
Przesyłam dane z jednego pliku (formularz) o drugiego za pomocą ajax. W drugim pliku dane z formularza wyświetlają się ładnie, lecz problem gdy chce pobrać inne
dane które są nie z tego pliku.

Mam tak:
skrypt1.php (includuje smarty i inne podstawowe dane o użytkowniku)
skrypt2.tpl (tu mam formularz i skrypt ajax za pomocą którego wysyłam żądanie do skrypt3.php) - plik widoku
skrypt3.php (plik tak jakby główny który wykonuje wszystkie operacje danej akcji. (np. rejestracja), tu też potrzebuje pobrać pewne dane użytkownika oraz
smarty, aby wyświetlić dane w pliku widoku (skrypt2.tpl))

plik skrypt2.tpl
  1. {literal}
  2. <script>
  3. $(document).ready(function(){
  4. $('#register').submit(function(){
  5.  
  6. $('#response').html("<b>Ładujemy dane...</b>");
  7.  
  8. $.ajax({
  9. type: 'POST',
  10. url: 'skrypt3.php',
  11. data: $(this).serialize(),
  12.  
  13. success: function(data) {
  14. $('#response').html(data);
  15. }
  16. })
  17.  
  18. return false;
  19.  
  20. });
  21. });
  22. </script>
  23. {/literal}
  24. <div id="box">
  25.  
  26. <form action="" method="post" id="register">
  27.  
  28. <div style="float: left; width: 50%">
  29.  
  30. <p> Login: (min. 5 znaków, max. 16)</p>
  31. <input type="text" name="login"/>
  32.  
  33. <p> Hasło: (min. 4 znaki) </p>
  34. <input type="password" name="password"/>
  35.  
  36. <p> Powtórz hasło: </p>
  37. <input type="password" name="r_password"/>
  38.  
  39. <p> Email: (Potrzebny by odzyskać hasło) </p>
  40. <input type="text" name="email"/>
  41.  
  42. </div>
  43.  
  44.  
  45.  
  46.  
  47. <div style="float: left; width: 100%; margin-top: 20px;">
  48. <input type="hidden" name="check" value="1" />
  49. <button type="submit" name="submit" value="1">Zarejestruj się!</button>
  50.  
  51. <div id='response' style="margin-top: 20px; " > {$result} </div>
  52.  
  53. </div>
  54. </form>
  55.  
  56. </div>
  57.  
  58.  


plik skrypt3.php

  1. <?php
  2. $aa = 'abbaa';
  3. $tpl->assign("result",$aa);
  4. ?>


dostaje błąd:
Fatal error: Call to a member function assign() on a non-object in C:\WebServ\httpd\scripts_php\skrypt3.php on line 3

Proszę o jakieś porady.


Pozdrawiam.
nospor
zmienna $tpl nie jest obiektem smarty. Tworzysz w ogole gdzies te zmienna w tym skrypcie 3? Bo w kodzie co pokazales nie tworzysz, a sama w magiczny sposob sie nie utworzy
boosik01
Tak tworzę, przepraszam nie dopisałem tego.
Tworze ją w pliku głównym index.php
  1. $tpl = new Smarty;


Bez ajaxu smarty działa łdnie, gdy próbuje zrobić wszystko 'dynamicznie' tak jakby wtedy skrypt3 nie widzi smarty
nospor
Co z tego, ze tworzysz w pliku index.php skoro skrypt3 odpalasz bezposrednio z pominieciem index.php....
url: 'skrypt3.php',
plik index.php sie nie laduje w ogole, bo niby czemu?
boosik01
No w sumie... O tym pomyślałem wink.gif

Lecz może jakieś porady ? Czy wychodzi na to że trzeba wszystko na nowo includować ?
viking
AJAX to nic więcej jak niezależny request. Tak jakbyś sobie wpisał w przeglądarce adres skrypt3.php. Jak już to zrozumiesz to z górki.
boosik01
Rozumiem. Chodzi mi o to czy może masz jakiś pomysł jak to wszystko inaczej zrobić? czy zostaje dołączanie plików na nowo?
viking
Najlepiej aby był zawsze jeden punkt wejścia do aplikacji - index.php i on wszystkim zarządzał. Jeśli masz naście plików to niestety w każdym musisz dołączyć co tam potrzeba.
boosik01
No dobrze. Próbuje dołączać smarty. Wszystko gra. Tylko ze znowu musze dopisać:
  1. $tpl->display('../templates/skrypt2.tpl');

czyli ten plik widoku by przekazać dane do tego skryptu.
Wtedy mam dwa razy to samo wyświetlenie strony czyli w tym wypadku dwa formularze rejestracyjne
viking
To nie generuj w tym pliku całego szablonu tylko jakąś konkretną akcję - walidację, rejestrację i przesyłaj dane jako JSON.
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.