jQuery i Cakephp

Wysyłanie zmiennych metoda POST

Aby zachowac konwencje nazewnictwa pol formularzy, jaka jest stosowana w cake musimy stworzyc po stronie javascript odpowiednia zmienna ktora przeslemy do skryptu php.

Najprostszym sposobem jest skorzystanie z pluginu FastSerialize ktory sparsuje nam formularz i sam stworzy zmienna w odpowiednim formacie.

Jesli jednak chcemy reczenie stworzyc zmienna z odpowiednimi danymi w formacie identycznym jak ten ktory przesylany jest przy normalny wyslaniu formularza, mozemy zrobic to w nastepujacy sposob:

<script language="JavaScript">
//kazda zmienna bedzie kolejnym elementem tablicy
params = [];

//uzywajac metody push dodajemy kolejne elementy
// jako name podajemy name inputa a jako value - value inputa:)
params.push({name: 'data[ftp][host]', value: 'host'})

// tablica elementow 
params.push({name: 'data[ftp][host][]', value: 'host1'})
params.push({name: 'data[ftp][host][]', value: 'host2'})

// stworzona zmienna wysylamy metoda POST - odpowiedz wyswietli alert

$.post('url', params, function(r){alert(r)});
</script>

Współpraca jQuery i Prototype

Jak wiadomo, do cake standardowo dołączana jest biblioteka Prototype. Zarówno w jQuery, jak i Prototype podstawową funkcją jest $(). Aby dodać jQuery i uniknąć konfliktu związanego z nadpisaniem funkcji $(), należy zastosować kod:

<?php 
echo $javascript->link('jquery');
echo $javascript->codeBlock('var $j = jQuery.noConflict();');
?>

Dzięki temu wywołując $() używamy Prototype, natomiast wywołując $j() używamy jQuery. Na stronie jquery.com opisanie są również inne sposoby rozwiązania tego problemu.


Personal Tools