ugrás a tartalomhoz

CakePHP és AJAX

vittorio · 2007. Szep. 11. (K), 19.16
Sziasztok!

Tudok olyat csinálni CakePHP-val, hogy az AJAX helperjével egy JS változót frissítek? Direkt nem arra gondolok, hogy egy DIV tartalmát frissítse. Nekem pl. ilyenre kell, hogy meghív egy PHP függvényt, és az visszaad egy ID-t, vagy egy akármilyen értéket. Ezt hogyan tudom megtenni?

Előre is köszönöm a válaszokat.
 
1

tudsz

Fraki · 2007. Szep. 12. (Sze), 06.42
Pl. form onchange-re az Akarmi modellben:

View
$ajax->observeField('AkarmiEgyikmezoId', array('url'=>array('action'=>'view.json'), 'complete'=>'someJSAction(request)'));

js:
  function someJSAction(request) {

  }



Ehhez kell még egy json view, amiben json-ban szolgáltatsz (views/akarmi/json/view.json):

	echo $javascript->object($akarmi);
Kell egy json layout is:

header("Pragma: no-cache");   
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");   
header('Content-Type: text/x-json');   
header("X-JSON: ".$content_for_layout);   
  
echo $content_for_layout;   

Elvileg a controllerben semmit nem kell tenned, ha már van egy view action-öd benne, és az beseteli az $akarmi-t. Viszont ne felejtsd beállítani a JSON service-t (pl. az AppController beforeFilter()-ében):

$this->RequestHandler->setContent('json', 'application/json');   
Valamint a Routert is fel kell készíteni, hogy leparse-olja a .json kiterjesztést a kérésről.

Router::parseExtensions('json');   
Mégvalami elvileg a prototype 1.6 elvileg már automatikusan átadja a request.json-ban a js objektumot, de nekem ezt még nem sikerült beüzemelnem rendesen, ezért kicsit kerülőutasan eval-olom :) az eredményt:

  function someJSAction(request) {
    akarmi = request.responseText.stripTags().evalJSON();
  }
Keress rá a cakephp, json szavakra, van egy jó cikk, amit egy nő írt, fekete hátteres a blogja, én is onnan szedtem ezeket.
2

kösz

vittorio · 2007. Szep. 13. (Cs), 16.56
Köszi a válaszodat, sikerült ezáltal közelebb kerülnöm a megoldáshoz. Persze mivel még csak az 1.1-es verziót használom, néhány dolog nem úgy műxik, mint leírtad, de meghegesztettem :D

Viktor
3

1.1 vs 1.2

Fraki · 2007. Szep. 13. (Cs), 17.39
Jahogy! Egyébként sokan vacillálnak, van róla hivatalos cikk is, de ma már egyértelmű, hogy új projekt esetén az 1.2-t tanácsos választani, hiába alpha. A core része (már amelyik az 1.1 tudását lefedi) már rég stabil, különben meg fényévekkel többet tud. A 2.0 itt jobb verziózás volna.