Først og fremmest vil jeg varmt anbefale at bruge et JS-objekt til datavariablen i ajax-anmodninger. Dette vil gøre dit liv meget enklere, når du har en masse data. For eksempel:
$('h1').click(function() {
$.ajax({
type:"POST",
url: "ajax.php",
data: { "code": code },
datatype: "xml",
success: function() {
$(xml).find('site').each(function(){
//do something
});
});
});
Med hensyn til at få information fra serveren, skal du først lave et PHP-script for at trække dataene ud fra db. Hvis du formodes at få en masse information fra serveren, så vil du derudover måske serialisere dine data i enten XML eller JSON (jeg vil anbefale JSON).
I dit eksempel vil jeg antage, at din db-tabel er meget lille og enkel. De tilgængelige kolonner er id, kode og beskrivelse. Hvis du vil trække alle nyhedsbeskrivelserne for en bestemt kode, kan din PHP se sådan ud. (Jeg har ikke lavet noget PHP i et stykke tid, så syntaksen kan være forkert)
// create data-structure to handle the db info
// this will also make your code more maintainable
// since OOP is, well just a good practice
class NewsDB {
private $id = null;
var $code = null;
var $description = null;
function setID($id) {
$this->id = $id;
}
function setCode($code) {
$this->code = $code;
}
function setDescription($desc) {
$this->description = $desc;
}
}
// now you want to get all the info from the db
$data_array = array(); // will store the array of the results
$data = null; // temporary var to store info to
// make sure to make this line MUCH more secure since this can allow SQL attacks
$code = htmlspecialchars(trim($_POST['lname']));
// query
$sql = "select * from news where code=$code";
$query = mysql_query(mysql_real_escape_string($sql)) or reportSQLerror($sql);
// get the data
while ($result = mysql_fetch_assoc($query)) {
$data = new NewsDB();
$data.setID($result['id']);
$data.setCode($result['code']);
$data.setDescription($result['description']);
// append data to the array
array_push($data_array, $data);
}
// at this point you got all the data into an array
// so you can return this to the client (in ajax request)
header('Content-type: application/json');
echo json_encode($data_array);
Eksempeloutputtet:
[
{ "code": 5, "description": "desc of 5" },
{ "code": 6, "description": "desc of 6" },
...
]
Så på dette tidspunkt vil du have et PHP-script, som returnerer data i JSON. Lad os også antage, at url'en til dette PHP-script er foo.php
.
Så kan du blot få et svar fra serveren ved at:
$('h1').click(function() {
$.ajax({
type:"POST",
url: "foo.php",
datatype: "json",
success: function(data, textStatus, xhr) {
data = JSON.parse(xhr.responseText);
// do something with data
for (var i = 0, len = data.length; i < len; i++) {
var code = data[i].code;
var desc = data[i].description;
// do something
}
});
});
Det er alt.