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:
------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script language="javascript"  type="text/javascript">
function meghivom() {
var url = 'a1_server.php?q1=' + document.getElementById('adat1').value+'&q2=' + document.getElementById('adat2').value+'&q3=' + document.getElementById('adat3').value;

http.open('GET',url, true);

http.onreadystatechange = function() {
	if(http.readyState == 4 && http.status == 200) {
		document.getElementById('eredmeny').innerHTML = http.responseText;
	}
	else {
		//document.getElementById('eredmeny').innerHTML = 'Error: Failed!';
		}
	};

http.send(null);  

}


function getHTTPObject() {
var xmlhttp = false;
        
// If the user is using Mozilla/Firefox/Safari/etc
if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.overrideMimeType('text/xml');
}
// If the user is using IE
else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
  return xmlhttp;
}

var http = getHTTPObject(); // We create the HTTP Object

</script>

</head>

<body>
<form  method="post" name="form1" >
  <p>Adat1:
    <input name="adat1" type="text" id="adat1">
  </p>
  <p>Adat2:
    <input name="adat2" type="text" id="adat2">
</p>
  <p>Adat3:
    <input name="adat3" type="text" id="adat3">
</p>
  <p>
    <input type="reset" name="Reset" value="Reset" onClick="meghivom()">
    <input type="button" name="Button" value="Button">
</p>
</form>
<div id="eredmeny">&nbsp;</div>

</body>
</html>

a1_server.php file:
-------------------

<?php

$kapcsolat = pg_connect('dbname=molnarnet port=5432 host=mosaic user=postgres')
    or die('Nem tudok csatlakozni: ' . pg_last_error());

$adat_add = "INSERT INTO teszt1 (adat1,adat2,adat3) VALUES ('" .$q1. "','" .$q2. "','" .$q3. "')";
pg_Exec($kapcsolat, $adat_add);

$keres = 'SELECT * FROM teszt1 ORDER BY adat1 ASC';
$eredmeny = pg_Exec($kapcsolat, $keres) or die('Hiba a kérésben: ' . pg_last_error());
$ossz_sor = pg_num_rows($eredmeny);

$kimenet = "<PRE>"
."<table width=100%  border=0 cellspacing=1 cellpadding=1>"
."<tr bgcolor=#CCCCCC>"
    ."<th scope=col>Adat1</th>"
    ."<th scope=col>Adat2</th>"
    ."<th scope=col>Adat3</th>"
  ."</tr>";

$fields[] = Array ("adat1");
$fields[] = Array ("adat2");
$fields[] = Array ("adat3");

$row= 0;
while ($row < $ossz_sor):
    $data = pg_fetch_object ($eredmeny, $row);
	reset ($fields);
	$kimenet .= "<tr>";
    while (list (,$item) = each ($fields)):

			 $kimenet .= "<td height=25>".$data->$item[0]."</td>\n"; 

		
    endwhile;
      $row++;
	$kimenet .= "</tr>\n";
endwhile;

$kimenet .= "</table> </PRE>";

pg_free_result($eredmeny);
pg_close($kapcsolat);

echo $kimenet;

?>
SQL:

CREATE TABLE teszt1 (
    adat1 character(20),
    adat2 character(20),
    adat3 character(20)
);
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