ugrás a tartalomhoz

Tömb átvétele JavaScriptben PHP-től

molnarl · 2005. Okt. 12. (Sze), 13.29
Üdv mindenkinek!

Az utóbbi pár hétben ismerkedem az AJAX-al.
Már készítettem is pici alkalmazást. Hozzá kell tennem, hogy én PHP -t használok amikor csak lehet.

A következővel akadtam el mindjárt az elején:

Adott egy űrlap. Submit után a bevitt adatokat átadom egy PHP -nek.
Eddigi tapasztalatim szerint, ha AJAX -al küldök adatokat csak szöveges adatot kapok vissza.
Hogyan tudom megoldani, hogy az adatokat egy tömben kapjam vissza?
Az működik, hogy a PHP kód a kapott értékekkel feltölti a tömböt, de nem tudom vissza küldeni, hogy utána a tömb értékeit a kiinduló oldalon egy táblázatban megjelenítsem (természetesen az oldal újratöltése nélkül :-)).

Ha valaki tud kérem segítsen!

Bye.
 
1

JSON

Hojtsy Gábor · 2005. Okt. 12. (Sze), 13.39
Nem kell feltétlenül az AJAX XML komponensét erőltetni ebben az esetben, a JSON kiváló kommunikációs lehetőséget ad nyelvek között (különösen, ha az egyik történetesen a JavaScript). A JSON a JavaScript jelöléseit használja, így a JS rögtön érti, PHP-ből meg elérhető hozzá értelmező és generáló kód is.
2

wddx

wiktor · 2005. Okt. 12. (Sze), 16.18
Esetleg még wddx-szel lehet próbálkozni. Az is ilyenre lett kitalálva.
3

Ez is egy megoldás

molnarl · 2005. Okt. 13. (Cs), 12.51
Szóval elgondolkodtam és rájöttem, hogy nem is kell nekem tömb. Mivel az adatok úgyis SQL szerverre kerülnek miért ne mehetnének soronként ?! Aztán visszadobok egy adatokkal feltöltött táblát.
Valahogy így:

a1.php file:
------------
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
  5. <title>Untitled Document</title>  
  6. <script language="javascript"  type="text/javascript">  
  7. function meghivom() {  
  8. var url = 'a1_server.php?q1=' + document.getElementById('adat1').value+'&q2=' + document.getElementById('adat2').value+'&q3=' + document.getElementById('adat3').value;  
  9.   
  10. http.open('GET',url, true);  
  11.   
  12. http.onreadystatechange = function() {  
  13.     if(http.readyState == 4 && http.status == 200) {  
  14.         document.getElementById('eredmeny').innerHTML = http.responseText;  
  15.     }  
  16.     else {  
  17.         //document.getElementById('eredmeny').innerHTML = 'Error: Failed!';  
  18.         }  
  19.     };  
  20.   
  21. http.send(null);    
  22.   
  23. }  
  24.   
  25.   
  26. function getHTTPObject() {  
  27. var xmlhttp = false;  
  28.           
  29. // If the user is using Mozilla/Firefox/Safari/etc  
  30. if (window.XMLHttpRequest) {  
  31.         xmlhttp = new XMLHttpRequest();  
  32.         xmlhttp.overrideMimeType('text/xml');  
  33. }  
  34. // If the user is using IE  
  35. else if (window.ActiveXObject) {  
  36.         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
  37. }  
  38.   return xmlhttp;  
  39. }  
  40.   
  41. var http = getHTTPObject(); // We create the HTTP Object  
  42.   
  43. </script>  
  44.   
  45. </head>  
  46.   
  47. <body>  
  48. <form  method="post" name="form1" >  
  49.   <p>Adat1:  
  50.     <input name="adat1" type="text" id="adat1">  
  51.   </p>  
  52.   <p>Adat2:  
  53.     <input name="adat2" type="text" id="adat2">  
  54. </p>  
  55.   <p>Adat3:  
  56.     <input name="adat3" type="text" id="adat3">  
  57. </p>  
  58.   <p>  
  59.     <input type="reset" name="Reset" value="Reset" onClick="meghivom()">  
  60.     <input type="button" name="Button" value="Button">  
  61. </p>  
  62. </form>  
  63. <div id="eredmeny">&nbsp;</div>  
  64.   
  65. </body>  
  66. </html>  
a1_server.php file:
-------------------
  1. <?php  
  2.   
  3. $kapcsolat = pg_connect('dbname=molnarnet port=5432 host=mosaic user=postgres')  
  4.     or die('Nem tudok csatlakozni: ' . pg_last_error());  
  5.   
  6. $adat_add = "INSERT INTO teszt1 (adat1,adat2,adat3) VALUES ('" .$q1"','" .$q2"','" .$q3"')";  
  7. pg_Exec($kapcsolat$adat_add);  
  8.   
  9. $keres = 'SELECT * FROM teszt1 ORDER BY adat1 ASC';  
  10. $eredmeny = pg_Exec($kapcsolat$keresor die('Hiba a kérésben: ' . pg_last_error());  
  11. $ossz_sor = pg_num_rows($eredmeny);  
  12.   
  13. $kimenet = "<PRE>"  
  14. ."<table width=100%  border=0 cellspacing=1 cellpadding=1>"  
  15. ."<tr bgcolor=#CCCCCC>"  
  16.     ."<th scope=col>Adat1</th>"  
  17.     ."<th scope=col>Adat2</th>"  
  18.     ."<th scope=col>Adat3</th>"  
  19.   ."</tr>";  
  20.   
  21. $fields[] = Array ("adat1");  
  22. $fields[] = Array ("adat2");  
  23. $fields[] = Array ("adat3");  
  24.   
  25. $row= 0;  
  26. while ($row < $ossz_sor):  
  27.     $data = pg_fetch_object ($eredmeny$row);  
  28.     reset ($fields);  
  29.     $kimenet .= "<tr>";  
  30.     while (list (,$item) = each ($fields)):  
  31.   
  32.              $kimenet .= "<td height=25>".$data->$item[0]."</td>\n";   
  33.   
  34.           
  35.     endwhile;  
  36.       $row++;  
  37.     $kimenet .= "</tr>\n";  
  38. endwhile;  
  39.   
  40. $kimenet .= "</table> </PRE>";  
  41.   
  42. pg_free_result($eredmeny);  
  43. pg_close($kapcsolat);  
  44.   
  45. echo $kimenet;  
  46.   
  47. ?>  
SQL:
  1. CREATE TABLE teszt1 (  
  2.     adat1 character(20),  
  3.     adat2 character(20),  
  4.     adat3 character(20)  
  5. );  
A dolog szépség hibáit talán látjátok. Pl.:
Nem bírom szépen megcsinálni Submit -al. A POST részére, de bármelyik részére tudtok szebb/jobb megoldást?

Üdv.: Laci