Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Jak dział funkcja assign
Forum PHP.pl > Forum > XML, AJAX
gebp
Mam

test.php
  1. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
  2. <script type="text/javascript" src="advajax.js"></script>
  3. </head>
  4. <body>
  5. <div id="t" style=" background-color:#ffff00;" >
  6. <form actiont=t2.php method=post id="form1">
  7. <input type=text name=l1>
  8. <input type=text name=l2>
  9. <input type=submit value=zapisz>
  10. </form>
  11.  
  12. <script type="text/javascript">
  13.  
  14. advAJAX.assign(document.getElementById("form1"),
  15. onSuccess: function(obj) { document.getElementById("t").innerHTML = "ODP: " + obj.responseText; },
  16. onError: function(obj) { document.getElementById("t").innerHTML = "Error..."; }
  17. )};
  18.  
  19. </div>
  20.  
  21. </body>


t2.php
  1. <?php
  2. header("Content-Type: text/html; charset=iso-8859-2");
  3.  
  4. sleep(4);
  5. $l1=$_POST['l1'];
  6. $l2=$_POST['l2'];
  7. $suma=$l1+$l2;
  8.  
  9. echo("Wynik to".$suma);
  10.  
  11. ?>


Z tego co czytałem o ajaxie tak zbudowany formularz - skrypt powinien zwrócić mi do elementu "t" wynik z skryptu t2.php. Jednakże nic a nic się nie dzieje. Gdzie popełniłem błąd. A może nie rozumiem dziłania assign.
artur81
  1. form actiont=t2.php

tutaj np masz błąd, poza tym bierz atrybuty w "".
gebp
Racja diabelski błąd.
Jeżeli można jeszcze zapytać.

Dlaczego powyższy przykład nie ładuje mi odpowiedzi do div'a. tylko wywala nową stronę
  1. <div id="t" style=" background-color:#ffff00;" >
  2. ....
  3. </div>


Nie bardzo łapie to.
kriqs
  1. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
  2. <script type="text/javascript" src="advajax.js"></script>
  3. <script type="text/javascript">
  4.  
  5. function cze()
  6. {
  7. advAJAX.assign( document.getElementById("form1"), {
  8. onSuccess: function(obj) { document.getElementById("t").innerHTML = obj.responseText; },
  9. onError : function(obj) { document.getElementById("t").innerHTML = "Error..."; }
  10. }
  11. )
  12.  
  13.  
  14. }
  15.  
  16.  
  17.  
  18. </head>
  19. <body onload=cze()>
  20. <div id="t" style=" background-color:#ffff00;" >
  21. <form action=t2.php method=post id="form1">
  22. <input type=text name=l1>
  23. <input type=text name=l2>
  24. <input type=submit value=zapisz>
  25. </form>
  26.  
  27. </div>
  28.  
  29. </body>


miales blad w skladni assign exclamation.gif az sie dziwie ze mi sie chcialo sprawdzac smile.gif polecam firebuga smile.gif

pozdrawiam smile.gif
gebp
Dzięki kriqs.

Ale dalej nie rozwiązałem mojego problemu. Ma malutki serwis na ramkach i chcę z tym skończyć. Z różnych powodów. Cały serwis napisany jest w php. Do czego dążże.
Na głównej stronie serwisu (index2.php) mają być 3 divy. Standardowy układ. Góra-> logo, lewo->linki, prawo-> różnie raz tabela z wynikami raz formularz wszystko w zależności od linka którego wybierze user.Wygląda to tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
  2. <link rel="stylesheet" href="styl.css" type="text/css" />
  3. <script type="text/javascript" src="funkcje.js"></script>
  4. <script type="text/javascript" src="advajax.js"></script>
  5. </head>
  6. <body onload="load()">
  7. <div id="divg">
  8. LOGO
  9. </div>
  10. <div id="divd">
  11. LINKI
  12. </div>
  13. <div id="con">
  14. różna treść raz tabela raz formularz zależny od linka (np: ten powyższy formularz)
  15. </div>
  16. </body>

I moje sakramentalne pytanie:
Jak zrobić by formularze załadowane do <div id="con"> zwracały swoją "wartość" do tego samego <diva>.
Jak zauważysz na stronie index2.php mam już <body onload="load()"> a funkcja load() to ( w pliku funkcje.js:
  1. function load() {
  2. advAJAX.setDefaultParameters({
  3. onInitialization : function(obj) { document.getElementById(obj.tag).innerHTML = "Preparing..."; },
  4. onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "Loading..."; },
  5. onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText; },
  6. onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Error..."; }
  7. });
  8. advAJAX.get({ url: "test1.php", tag:"divg" });
  9. advAJAX.get({ url: "test2.php", tag:"divd" });
  10. advAJAX.get({ url: "t1.html", tag:"con" });
  11. advAJAX.setDefaultParameters({});
  12. }

czy każdy formularz ładowany do <div id="con"> mają mieć taką postać jak podałeś wyżej questionmark.gif?
Ja osobiście wymyśliłem (odnosząc się analogicznie jak w php) że funkcje będą ładowane z pliku. Jednakże jak tak zrobiłem to d...a zbita. Nie działało wogóle nic. Więc zacząłem powoli sprawdzać i doszedłem do wniosku iż funkcja advAJAX.assign coś nie tak. tyle że w tym momencie naprawde nie wiem jak to rozwiązać. Znam podstawy java script ale nie zabardzo to rozumiem. Powyższy przykład napisze brzydko zerżnąłem z strony Pana Łukasza Lach. Za przykład posłużył mi formularz logowania. Ale u mnie to w ogóle nie działało. tzn. nie formularz tylko to co sam stworzyłem.
Zapytam jeszcze tak. Czy taka forma jest poprawna (chodzi o wykorzystanie do innych formularzy)
  1. function cze(id_formularza, zaladuj_do)
  2. {advAJAX.assign( document.getElementById(id_formularza), {
  3. onSuccess: function(obj) { document.getElementById(zaladuj_do).innerHTML = obj.responseText; },
  4. onError : function(obj) { document.getElementById(zaladuj_do).innerHTML = "Error..."; }
  5. })}

Przepraszam że tak meczę. Jeszcze raz dziękuję.


Po części znam odp. na moje powyższe. Z tego co wyczytałem to funkcja advAJAX.assign nie działa jeżeli formularz jest ładowany za pomocą Ajaxa.
Zna ktoś może rozwiązanie tego problemu.
Może zastosować Xhtml questionmark.gif? (nie znam go dlatego pytam zanim coś kolejnego będę się uczył )
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.