[ Vladica Savić @ 27.06.2010. 09:33 ] @
Inspirisan Ext Direct-om i nacinom na koji mogu da se pozivaju server metode direktno sa klijentske (JavaScript) strane palo mi je na pamet da napisem svoju (besplatnu) verziju, nazvao sam je inace jAPI, koja nece zavisiti od ExtJS framework-a i uz pomoc koje ce moci da se pozivaju PHP metode direktno kroz good old "cist" javascript. Sta je sve potrebno za jAPI? Najpre je potrebno da u svoju index.html (ili bilo koju drugu html stranu) ucitate odgovarajuce skripte jAPI.js, jAPI-Remote.php. jAPI-Remote.php u sustini moze da bude bilo koja php skripta cije public metode zelite da pozivate kroz javascript. Tako da bi html kod koji se tice tog dela trebao da izgleda ovako: Code (html): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- jQuery is optional, you dont have to use it, but I reccommend it to you --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="js/jAPI.js"></script> <script type="text/javascript" src="jAPI-Remote.php"></script> </head> <body></body> </html> Obzirom da se komunikacija izmedju klijentske i serverske strane vrsi asinhrono ostavio sam mogucnost u jAPI.js -u da moze da se koristi i jQuery ajax tako da je ukljucivanje jQuery biblioteke opciono. Kao sto rekoh, jAPI-Remote.php moze da bude bilo koja php skripta cije public metode zelite da pozivate kroz javascript, ali da bi to mogli da ucinite potrebno je ukljuciti jAPI-Core.php, i da prilikom instanciranja jAPIBaseClass-a na kraju vase skripte kao parametar navedete imena klasa cije metode zelimo da pozivate. Jedan od primera kako bi recimo jAPI-Remote.php skript mogao da izgleda: Code (php): <?php //Include jAPI Core and jAPIBaseClass include("httpHandler/jAPI-CORE.php"); //Bellow is some demo classes with some basic functions class MySimpleMath { public function Addition($firstParam, $seccondParam) { $sum = $firstParam+$seccondParam; echo $sum; } public function CompareNumbers($firstNum, $seccondNum) { $comparingResults = ($firstNum == $seccondNum)?"The numbers are equal":"The number is not equal"; echo $comparingResults; } } class MyStringMixer { public function ReverseString($inputString) { echo strrev($inputString); } public function JustSayHi() { echo "Hello world!"; } } //Create new instance of jAPIBaseClass with names of all classes that you want to use separeted with comma... new jAPIBaseClass('MySimpleMath,MyStringMixer'); ?> I, to bi bilo to :) Nakon svega ovoga, mozete pozivati kroz javascript direktno public php metode klasa koje ste ekstendovali jAPIBaseClass klasom. Primer koriscenja: Code (html): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- jQuery is optional, you dont have to use it, but I reccommend it to you --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="js/jAPI.js"></script> <script type="text/javascript" src="jAPI-Remote.php"></script> </head> <body> <script> MySimpleMath.Addition(555,2); MySimpleMath.CompareNumbers(23,55); MyStringMixer.ReverseString("This is a test..."); MyStringMixer.JustSayHi(); </script> </body> </html> Ceo funkcionalan primer, zajedno sa skriptama koje nisu ovde navedene (jAPI.js i jAPI-Core.php) mozete preuzeti ovde ...naravno, verovatno sam negde nesto i prevideo, ali svakako bi bilo zanimljivo cuti i vasa misljenja, i eventualne predlog (konstruktivne) kako poboljsati ovo. Pozdrav ;) [Ovu poruku je menjao Vladica Savić dana 27.06.2010. u 18:26 GMT+1] |