jQuery, Ajax, JSON és PHP
Ajax kérésekhez legtöbbször jQuery-t használok, mert egyszerű, gyorsan elkészíthető és megbízható.
Most gyorsan felvázolnám, hogyan is kell egy egyszerűbb Ajax kérést összedobni jQuery segítségével.
Szerveroldal (PHP):
Ha egyszerű szöveges üzenetet szeretnénk küldeni a kliensoldalra, akkor egy sima echo utasításra lesz szükség.
pl.:
<?php echo "foobar"; ?>
Ha összetett adatstruktúrát szeretnénk küldeni a kliensoldalra, akkor JSON objektumként küldjük azt.
pl.:
<?php $response = array(); $response['foo'] = 'foo'; $response['bar'] = 'bar'; $response['baz'] = 'buz'; echo json_encode($response); ?>
Kliensoldal (JavaScript):
Egyszerű szöveges üzenet esetén a JavaScript kód a következő:
$.ajax({
// szerveroldali szkript elérési útja
url: "server.php",
type: "GET",
// típus és kódolás
contentType: "application/text; charset=utf-8",
// paraméterek
data: ({
foo: foo_,
bar: bar_,
buz: buz_
}),
// kommunikációs adattípus
dataType: "text",
beforeSend: function(x) {
if (x & amp; & amp; x.overrideMimeType) {
x.overrideMimeType("application/text;charset=UTF-8");
}
// kiíratunk egy animált ajax-loader GIF-et amíg a kérés tart
$('#myDiv').html("<div id="ajax_gif ">);
$('#myDiv').append("<img />")
$('#myDiv').append("</div>");
},
success: function(data){
$('#myDiv').html(data); // foobar
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// ha gond van kiíratjuk a hibát
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
});
JSON adatszerkezet esetén a JavaScript kód a következő:
var _foo = "foo", _bar = "bar", _buz = "buz";
$.ajax({
// szerveroldali szkript elérési útja
url: "server.php",
type: "GET",
// típus és kódolás
contentType: "application/j-son; charset=utf-8",
// paraméterek
data: ({
foo: foo_,
bar: bar_,
buz: buz_
}),
// kommunikációs adattípus
dataType: "json",
beforeSend: function(x) {
if (x & amp; & amp; x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
// kiíratunk egy animált ajax-loader GIF-et amíg a kérés tart
$('#myDiv').html("<div id="ajax_gif ">);
$('#myDiv').append("<img />")
$('#myDiv').append("</div>");
},
success: function(data){
// a kapott adatokkal már azt teszünk amit akarunk, pl.kiíratjuk egy DIV - be
$('#myDiv').html(data.foo + '
'); // foo_resp
$('#myDiv').append(data.bar + '
'); // bar_resp
$('#myDiv').append(data.buz); // buz_resp
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// ha gond van kiíratjuk a hibát
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
});
A második esetben a GET tömbben küldött adatokkal dolgozunk a szerveroldalon.
szólj hozzá