Teljesen kezdo vagyok ezen a teren a protoype-t hasznalnam erre a celra mert ugylattam hogy a jquery-tol nekem ez konyebb lenne :) Egy oldalba szeretnek adatokat beolvasni a severrol (ugyanaz a szerver ahonnan az oldal is letoltodik).
Konkretan egy vendegkonyvel kiserletezek ezel a dologgal, minden egyes bejegyzesnel van egy href="javascript:enable_gbook(".1111.",'EnableGuestbook');" Termeszetessen az 1111 ertelemszeruen mindeg mas mas ....
function enable_gbook(message_id,x_method) {
new Ajax.Request('/psc.php',
{
method:'post',
parameters: {object: 'Guestbook', method: x_method, uid: message_id, xx: Math.random()},
onCreate: function(){
$('enable'+message_id).hide();
$('enabling'+message_id).className="";
},
onSuccess: function(transport){
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response );
// itt az alert mutatja is a valaszt amit a psc.php -tol kap
var myjson = transport.responseText.evalReponse();
// ettol a sortol nem jut tovabb itt a bibi valahol....
alert("Aaaaaaa:\n\n" + myjson);
$('item'+message_id).className="newborder";
$('enabling'+message_id).hide();
},
onFailure: function(){ $('enabling'+message_id).className="hidden";}
});
}
Ez meg a psc.php idevago resze ....
$uid = (int)$_POST['uid'];
$sql = "UPDATE guestbook_tetelek SET `engedelyezve` = 'y' WHERE `uid` = ".$uid;
if (mysql_query($sql))
$response = array ('Uid'=>$uid, 'Status'=> 'Ok');
else
$response = array ('Uid'=>$uid, 'Status'=> 'Error');
header ("Content-Type: text/x-javascript");
$output = json_encode($response);
echo ("valami(".$output.");");
Szoval vegeredmenyben a psc.php attol fuggoen hogy sikeresen vegrehajtja az update -t vagy Ok vagy Error valaszt adna egy json -ba mert mas estekben tobb mas adat is majd igy lessz atadva. A javascriptben nem tudom feldolgozni ezt a json valaszt, es ebben kellene egy kis segitseg.
Azt sem bannam ha valaki tudna valami pdf -et ilyen temaban, lehet angol is de azert magyar jobb lenne. A neten mar nezelodtem de amiket talatam azok alapjan nem boldogultam ...
- 1465 megtekintés
Hozzászólások
PHP-ban siman echo $output
Hasznald a responseJSON valtozot, a prototype kigyujti neked, az erteke {uid: 1111, status: 'ok'} lesz, mint js objektum.
- A hozzászóláshoz be kell jelentkezni
alert("Aaaaaaa:\n\n" + transport.responseJSON);
erre azt kapom hogy NULL :)
de emez: alert("Success! \n\n" + response ); ez kiirja rendesen csak ez nem az, de ugylatszik a php rendesen elkuldi ....Csak emitt rontok el valamit es a js objektum valahogy nem akar letrejonni.
- A hozzászóláshoz be kell jelentkezni
Ugy nez ki hogy sikerult megoldanom :)
1. a php fajlban a
header ("Content-Type: application/json; charset=utf-8");
sorba a vegen ez lett a megoldas
2. a javascriptben meg a
var valasz = transport.responseJSON;
alert("myjson:\n\n id=" + valasz.Uid + "\n\n Status=" + valasz.Status);
Szoval mukodik a dolog, gondolom igy kell csinalni :)
Azert ha valakinek van valami jo pdf akkor annak azert nagyon megorulnek!
Azt szeretnem meg kerdezni hogy sokfele latom hogy az ajax keres vegere a parameterekben szinte mindeg valami veletlen szamokat is beraknak tudom ez a bongeszok cache kiiktatasa miatt van, de nincs ettol valami elegansabb szebb megoldas? Vagy en is veletlenszamozzak?
Aadaam, nagyon szepen koszonom a segitseged!!!
- A hozzászóláshoz be kell jelentkezni
Én úgy szoktam, hogy egyetlen véletlen számot generálok, ami a kliens alkalmazás teljes élete alatt azonos, és azon belül sorszámozom a kéréseket. Ez segíthet nyomkeresésben is talán, bár nekem még sosem volt rá szükségem.
Ha nagyon paranoiás vagy, hogy a véletlenszámok ütköznek esetleg, akkor lehet úgy is csinálni, hogy szerver oldalon generálod (itt már lehet akár dátum vagy sorszám alapú is), és egy első kéréssel inicializálja magának a kliens alkalmazás.
- A hozzászóláshoz be kell jelentkezni
Nem a paranoiara gondoltam, vegulis azok a veletlen szamok csak a kliens oldalon vannak felhasznalva, hanem csak arra hogy ne kelljen mindeg hozzarakni azt a valamilyen szamot, legyen az veletlen vagy sorszamozott veletlen ...
Valami olyasmire gondoltam inkabb hogy ha POST metodusassal kerem le akkor a bongeszo alapbol nem cache-li vagyis nem a sajat cache -bol szedi ki a valaszt vagy a Headerbe ha hozzaadnek valami no-cache stilusu valamiket akkor nem is kellene egyaltalan az a veletlenszam. Nem tudom mennyire ertheto a gondolatmenetem ...
- A hozzászóláshoz be kell jelentkezni
Azert a keresek ertelmet nem kene agyonvagni, ami GET az legyen GET, ne POST-olgassunk orrba-szajba, annyit nem er a dolog.
Egyebkent meg szerver oldalrol lehet jatszani, van egy csomo cache control header, amit ki lehet kuldeni, meg Expires header, amivel eleve lejart kerest kuldesz, de az a gond, hogy erosen bongeszo-implementacio fuggo, hogy ebbol mit vesz figyelembe. A random szam azert jo, mert igy az egyes requestek kisebbek lesznek az akar 5-6 cache control fejleccel.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Igen, tudom hogy a get az akkor van amikor adatokat kerek le a szerverrol, es a post viszont amikor a szerveren modositom ...
Igen, a cache control meg ilyesmikre gondoltam, mongyuk az eszembe sem jutott hogy a random szammal sokkal kisebb requestek lesznek :) meg persze arra sem gondoltam hogy ezek a dolgok nem minden bongeszoben mukodnek megfeleloen.
Szoval akkor vegeredmenyben majd szamozom en is...
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy lesznek proxy-k es bongeszok, amik le fogjak sz.rni, hogy te mit gondolsz az ETag cache-rol vagy barmirol. Ez szomoru, es a vilagnak nem ilyennek kellene lennie, de egyes komponensek, ha javascriptet latnak, orokre akarjak cache-elni.
Nem hiszek a veletlenszamos megoldasban, altalaban a napi datumot szoktam megadni es akkor nem lesz baj, egy napig cache. Egy atlag CDN-t amugy is igy allitunk be. Vagy persze lehet korlatozni az alkalmazas hatokoret ismerten jol mukodo bongeszokre es proxy-mentes rendszerre, de gondolom nem intranet portalt fejlesztesz.
- A hozzászóláshoz be kell jelentkezni
Mostmar azthiszem hogy minden vilagos, a cache control meg hasonlok elesnek mivel hogy bongeszo meg stb. fuggok sot meg ha "szamozok" akkor igy az atvitt adatmenyiseg is csokkeni fog. Mivel a veletlenszam generalas a kliensnel jon letre az a szervert nem terheli igy gondolom majd az lessz az olyan lekereseknel amiknel a valasz gyakran valtozik amiknel meg a valtozas ritka es nem baj ha esetleg valahol megis kesbol kerul ki a bongeszobe oda meg majd valami ido alapu dolog lessz szoval nem datum hanem majd ora es perc... pl. rand=2310
Es akkor meg azt is megbirom csinalni hogy ezeket a kereseket es a rajuk adott valaszokat peldaul memcachelem a szerveren, valami ijesmire gondolok:
http://foo.bar?valami=11&masvalami=222&rand=2310
akarhany bongeszo is keri le ezt mongyuk ugyanabban a percben a valaszt nem kell ujbol a szerveren oszeraknom hanem pl memcached -bol ki birom adni ...
Az ugy rendben van-e hogy a session id az nem kerul bele az url be hanem a lekeres fejlecebe teszi bele a bongeszo? Mert igy akkor a fenti otlet alapjan a szerveren birok cachelni ... Persze olyan dolgokat amiket egyforman kap meg minden bongeszo, ami meg kolonbozo azoknal meg az url -be beirom session id -et?
- A hozzászóláshoz be kell jelentkezni
Szerintem a session id-t tedd le sutibe.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni