[ johnnyc @ 06.03.2010. 15:55 ] @
Ova bi tema mozda mogla i u PHP sekciju, ali hajde da je za pocetak postavimo ovde...

Imam web formu, i na njoj dva option-select polja. Sve radim koristeci Ajax i CakePHP, i tutorijal koji mozemo naci na sledecem linku:


http://bakery.cakephp.org/articles/view/dynamic-select-boxes-with-ajax-jquery


Ono sto zelim da napravim je da kada se selektuje odredjeno polje u prvom selectu, da se izlistaju pripadajuca polja u drugom select boxu.

Velik problem mi pravi ono sto se desava kada selektujem neku vrednost u prvom select polju...


Naime, na Insert funkciji (add.ctp), sve je okej, i sve radi kako treba.

Ali, kada radim Edit, vraca mi se kompletan HTML sadrzaj moje forme, bukvalno od pocetka fajla edit.ctp, pa sve do kraja.


Dakle jQuery funkcija:


Code:
$("#BookCategory").bind('change', function() {
    $.post('/books/listTitleByCategory/' + $(this).val(), function(data) {
        $("#BookTitle").empty().append(data);
    }, 'html');
}); 



... odnosno varijabla data, vrati kompletan sadrzaj edit.ctp fajla, odnosno HTML koji on generise.

Sve ovo o cemu pricam, desava se kada promenim seletovano polje u prvom select boxu. I to samo na strani kroz koju radim insert novog recorda.

Sta bi moglo da bude problem, i da li mozete da mi kazete gde gresim?




VELIKO hvala unapred!!!






[Ovu poruku je menjao johnnyc dana 06.03.2010. u 17:07 GMT+1]
[ Nikola Poša @ 06.03.2010. 20:43 ] @
Citat:
johnnyc: ... odnosno varijabla data, vrati kompletan sadrzaj edit.ctp fajla, odnosno HTML koji on generise.

Nisam nikad koristion CakePHP, ali praveći neku paralelu sa framework-ovima u kojima sam radio, kad šalješ XmlHttp (AJAX) zahtev na neki kontroler, obavezno treba da disable-uješ renderovanje layout-a/view-a, kako bi output bio samo ono što ćeš da echo-uješ u toj nekoj akciji koju "gađaš" AJAX request-om. To disable-ovanje u Cake-u bi trebalo da radi ova linija koda: $this->autoRender = false;.
[ johnnyc @ 06.03.2010. 22:46 ] @
Pronasao sam gde je bio problem, nije do jQueryja, vec do mene...

Naime, kada radim insert, onda je path do controller fajla (deo vezan za Cake) kao sto je naveden ovde u drugoj liniji:
Code:

$("#BookCategory").bind('change', function() {
    $.post('listTitleByCategory/' + $(this).val(), function(data) {
        $("#BookTitle").empty().append(data);
    }, 'html');
}); 




Ali kada radim update, onda je path sadrzan u sledecem:
Code:

$("#BookCategory").bind('change', function() {
    $.post('/myapp/books/listTitleByCategory/' + $(this).val(), function(data) {
        $("#BookTitle").empty().append(data);
    }, 'html');
});


Druga varijanta moze naravno da se koristi i za insert.


Hvala u svakom slucaju.