jQuery in PHP - veliko podatkov
 
gentleman 8. avg 2010 10:26:39 Pridružen od:
21. sep 2009
331 objav
381 63 5
#1

Pozdravljeni!



Trenutno eksperimentiram z uporabo jQuery in PHP in prenosom podatkov med njima.

Uspe mi preko funkcije $.ajax v jQuery klicat php datoteko in preko nje vrniti neko navadno besedilo.






sestavi.js


var id = $(this).attr("id");
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "/ajax/sestavi-ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".podatki").fadeIn();
$(".podatki").html(html);
}
});




sestavi-ajax.php


$id_kategorije = $_POST["id"];;

$category = new Category($id_kategorije, intval($cookie->id_lang));
$category->name = Category::hideCategoryPosition($category->name);

echo $category->name;

Zadeva pravilno vrne ime kategorije.

Problem nastane ko bi jaz rad nazaj vrnil kakšne bolj kompleksne podatke kot so zapleteni arrayi, več spremenljivk, itd..



Kateri način je najbolj učinkovit način da iz PHP datoteke v sestavi.js pošljem kompleksne podatke in jih prikažem?


všeč(1) ni všeč(0) spam(0)
 
SpinX 8. avg 2010 10:32:37 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
#2

Pri klicu dodaj še:

dataType: "xml/html/script/json",



Najlažje je uporabljat JSON. V PHPju zgradiš array s podatki potem pa ga izpišeš takole:

echo json_encode($array);



v JS potem kličeš podatke tako: html.podatek


všeč(4) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
gentleman 8. avg 2010 10:39:27 Pridružen od:
21. sep 2009
331 objav
381 63 5
#3

Super SpinX!



Kaj pa če imam več arrayev.. Vsakega posebej dam echo json_encode ?

Kako pa bi lahko v JS klical samo določene spremenljivke iz PHP. Recimo $category->name.

Če bi hotel samo to prikazano. Trenutno mi deluje tako, da mi izpiše vse kar vrne PHP datoteka.

Recimo spremenljivka $category->name se mora prikazati v divu .kategorija , neka druga spremenljivka pa drugje.


všeč(0) ni všeč(0) spam(0)
 
kelvan 18. avg 2010 22:03:22 Pridružen od:
19. okt 2007
891 objav
658 122 26
#4

kaj pa ce bi php file klical v dummy iframe-u in potme lahko dolocis, kaj se kje prikaze..

recimo $('#kategorija', window.parent.document).html('bla bla');


všeč(0) ni všeč(0) spam(0)
 
cyber 19. avg 2010 03:50:37 Pridružen od:
2. dec 2007
536 objav
750 76 10
#5

Recimo, da iz PHP vrneš objekt:


o={
"name": "Ime",
"title": "Naslov"
}

...potem lahko klic in pa response handler izgledata takole:


$.getJSON('ajax/test.php', function(data) {
$('h1.name').html(data.name);
$('h2.title').html(data.title);
});

...in tako naprej.


všeč(1) ni všeč(0) spam(0)
 
ledi 19. avg 2010 05:27:56 Pridružen od:
14. avg 2008
681 objav
325 223 14
#6

definitivno json,



če imaš veliko kb podatkov ki se pretakajo, vključi še gzip kompresijo in bo zadeva občutno hitrejša, saj se plain text dobro kompresira


všeč(0) ni všeč(0) spam(0)
 
cyber 19. avg 2010 06:17:52 Pridružen od:
2. dec 2007
536 objav
750 76 10
#7

Sej mogoče v določenih primerih, je tudi vračanje HTML fragmentov smisleno.



Primer:

Imamo seznam podatkov in pager. Najprej naredimo "klasično" pageanje, preko GET parametra. Potem pa v view dodamo preverjanje če je request prišel preko AJAX-a, in v tem primeru vrnemo samo HTML fragment, seznam in pager. Potem pa na linke pagerja, bindamo AJAX request, da pač pokliče nek view, in zamenjamo vsebino. Zelo enostavno. Treba je le paziti, in ob vsakem klicu, rebind-at linke pagerja.



Poleg tega, da je enostavno, pa pridobimo še to, da če user prehitro klikne pager, preden se naloži JS, ali pa ima celo izklopljen JS, stvar deluje.



Če se potem še pohecamo z kakimi anchor-ji, lahko še naredimo, da tudi če user refresha stran, se vseeno pravilno page-a.



Stvar se edino lahko zakomplicira, če imamo v seznamu elemente, na katere bind-amo še kakšne dodatne stvari, potem je treba še zato poskrbet.



Če pa imamo samo enostaven seznam in pager, pa mislim da je smiselno vračati HTML fragmente.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se