Temat: ajax i input select: Jak zachować wybrane dane po odświeżeniu strony?

Witam szanownych cake'owców.

Mam taka perełkę, którą nie potrafię sobie poradzić.
Korzystając z hojności Ajaxa w cakePHP moim celem jest automatyczne załadowanie dynamicznej treści do określonego div'a w zależności od wybranej pozycji na liście select. Mechanizm chyba najpopularniejszy w Internecie:

$div = array('url' => 'update_spec_select','update' => 'whodiv');
echo $ajax->observeField('who', $div);

gdzie:
- update_spec_select: widok z generowaną treścia diva
- whodiv: div, do którego powinna się generowana treść załadować
- who: obserwowany select, zmiany wyboru pozycji z listy wyzwalają daną akcję

Problem polega na tym, że nie wiem jak wykonać pożądaną akcję podczas ładowania strony, tudzież odświeżania lub przy prezdefiniowaniu wcześniej ustawionej pozycji select'a who.

NP:
przy wyborze 1 pozycji select'a who ładuje się treść A do div'a whodiv, przy wyborze 2 odpowiednio B itd...
Kiedy odświeżę stronę wybrana pozycja w select'ie zostaje, natomiast 'resetuje' się zawartość whodiv (chciałbym aby się ładowała w zależności od wcześniej wybranej pozycji)
To samo dzieje się kiedy mam np z poprzedniej strony zdefiniowany element select'a who, treść do whodiv również się nie ładuje.

Jaki jest najłatwiejszy sposób na wymuszenie akcji ajax przy zmianach niezwiązanych stricte ze zmianą wyboru elementu z listy?
Mógłbym czarować z javascriptem, ale wolałbym tego uniknąć ze względu na przejrzystość kodu i czas na to poświęcony.
Czy ktoś spotkał się również z takim problemem?
Proszę o pomoc i pozdrawiam.

Marek Rodkiewicz - http://newrails.pl

2

Odp: ajax i input select: Jak zachować wybrane dane po odświeżeniu strony?

Mógłbym czarować z javascriptem, ale wolałbym tego uniknąć ze względu na przejrzystość kodu i czas na to poświęcony.

No coz, skoro to jest AJAX to nie unikniesz JSa. Ja bym wlasnie zrobil to w JSie, olewajac Ajaxowy Helper z Cake (zwlaszcza, ze chodzi Ci o bardzo customizowane rzeczy).

Kiedy odświeżę stronę wybrana pozycja w select'ie zostaje

- to musisz zrobic i tak na cookies

Odp: ajax i input select: Jak zachować wybrane dane po odświeżeniu strony?

Dziękuje za podpowiedź i trop, dotarłem do jednej konstrukcji, która dała mi pożądane działanie.

echo $ajax->Javascript->event('window','load',
    $ajax->remoteFunction(array(
        'update'=>'whodiv',
        'loading'=>"Element.hide('whodiv');Element.show('loading')",
        'complete'=>"Element.hide('loading');Effect.Appear('whodiv')",
        'url'=>'update_spec_select',
        'with' => 'Form.Element.serialize(\'who\')')));

Dzięki temu przy przeładowaniu strony przeładowywany jest również ajax w zależności od wybranych wartości na select liście w tym przypadku.
Może komuś to pomoże.
Pozdrawiam smile

Marek Rodkiewicz - http://newrails.pl