Xây d ng các trang web d a trên Ajax b ng PHP
Page 1 of 11
Xây d ng các trang web d a trên Ajax b ng PHP M c
: Trung bình
Ken Ramirez, Sáng l p viên, Axsys Technology Group 07 08 2009 Tìm hi u quá trình vi t các ng d ng JavaScript + XML không ng b (Ajax) b ng cách s d ng mã JavaScript™ nguyên sinh và PHP. Bài vi t này gi i thi u m t s khung công tác và các giao di n ch ng trình ng d ng (API) khác nhau, gi m b t c s l ng mã b n c n vi t hoàn t t m t ng d ng web d a trên Ajax. PHP ã có m t t nhi u n m nay. Th ng nó c s d ng nh m t ngôn ng k ch b n l nh phía máy ch phát tri n các ng d ng d a trên web khá nhanh chóng và t c các k t qu t t. Th c t m t s d án d a trên web ph bi n nh t nh PHP-Nuke, osCommerce, và Joomla t t c u c phát tri n b ng PHP và ngày nay ti p t c l n m nh. Ajax c ng ã có m t c m t th i gian, nh ng mãi g n ây m i có nhi u trang web c phát tri n b ng cách s d ng các th c hành Ajax. Ajax cung c p công ngh cho phép m t trang web hay ng d ng d a trên web giao ti p v i máy ch mà không c n ph i làm m i l i toàn b trang. V c b n, các c tính không ng b cung c p ph ng ti n trình duy t c a máy khách g i yêu c u ho c g i các ph ng th c mà c th c hi n bên phía máy ch . K t qu t máy ch sau ó có th c x lý bên phía khách b ng cách s d ng mã JavaScript, và b t k! k t qu u ra nào c ng có th c tr n vào khung nhìn HTML m t tr c (front-end) hi n t i mà không c n làm m i l i trang. Khi s d ng Ajax, b n không th t s s d ng m t ngôn ng l p trình m i. Trên th c t , t t c nh ng gì b n làm là t n d ng các công ngh hi n có và a vào s d ng chúng t t h n. Khi k t h p v i nhau, PHP và Ajax cung c p m t n n t ng m nh t o ra các trang web ho c các ng d ng d a trên web v i các tính n ng v ng m nh. Bài này xem xét m t s cách s d ng PHP và Ajax và kh o sát cách b n có th t n d ng chúng trong các ng d ng d a trên web c a b n nh th nào. Tr c khi b n ti n hành, m t s hi u bi t v ng vàng v HTML và mã JavaScript là r t quan tr ng. B n c ng c n quen bi t PHP nh là m t ngôn ng k ch b n l nh, m c dù h u h t ngôn ng k ch b n l nh nào khác c ng có th thay th c nó.
Giao ti p v i máy ch Chìa khóa cho vi c giao ti p khách/ch trong Ajax là s d ng i t ng XMLHttpRequest c a JavaScript. " i t ng này c h u h t các trình duy t h# tr , g m Windows® Internet Explorer 5.0 và các b n cao h n, Safari 1.2, Mozilla Firefox, Opera 8 và các b n cao h n, và Netscape 7. " hi u cs khác nhau gi a các giao ti p khách/ch truy n th ng và giao ti p khách/ch d a trên Ajax, tôi s$ s d ng m t ví d . Theo truy n th ng, trình duy t khách g i n i dung n máy ch x lý ho c l u tr trong m t c s% d li u, b n th ng s d ng m t hành ng POST g i n i dung t các tr ng u vào thu th p c % phía khách t i máy ch . Máy ch x lý n i dung này b ng cách s d ng PHP (ho c b t k! ngôn ng k ch b n l nh nào mà b n l a ch n), c ho c l u d li u b ng cách s d ng m t c s% d li u, và tr l i các k t qu c nhúng bên trong mã HTML. Sau ó HTML s$ c trình duy t x lý và m t trang m i c bi u hi n ra cho ng i s d ng cu i cùng xem. Hình 1 mô t rõ k ch b n này. Hình 1. Quy trình truy n th ng
trình d li u và nh n k t qu
Xây d ng các trang web d a trên Ajax b ng PHP
Page 2 of 11
Khi s d ng Ajax, c ng cùng quy trình này nh ng c n ít th i gian h n % m t tr c. Ý t %ng là làm cho ng i s d ng c m th y nh là h không bao gi ph i i m t trang c p nh t. Th c t là b ng cách s d ng Ajax, b n có th phát tri n toàn b ng d ng web b ng cách s d ng ch& m t trang HTML n l', m c dù tôi h t s c khuyên b n ng làm nh v y. Theo cách truy n th ng, n u b n mu n g i m t bi u m(u cho máy ch , b n thi t l p m t hành ng (action) c a bi u m(u ó và ch& nh rõ ki u hành ng là POST. V i Ajax, b n không th c s trình m t bi u m(u tr c ti p cho máy ch . Thay vào ó, b n g i m t hàm JavaScript, nó ki m tra l i và thu th p các giá tr t bi u m(u c a b n và sau ó g i d li u n m t hàm % phía máy ch b ng cách s d ng XMLHttpRequest. K t qu c g i tr l i t i m t i m cho trình khách, sau ó trình khách x lý k t qu và c p nh t các ph n c a trang c n c c p nh t. Trong tr ng h p này, trang ó không c làm m i l i toàn b . Do ó, c n ít th i gian h n x lý mã HTML. K t qu là hi u n ng ho t ng t t h n. Hình 2 minh ho quy trình này h i khác i nh th nào khi s d ng Ajax t o ra m t c p nh t cho trang web ch không ph i là làm m i toàn b trang. Hình 2. Quy trình Ajax
trình và nh n k t qu
Xây d ng các trang web d a trên Ajax b ng PHP
Page 3 of 11
Hãy quan sát các b c c n thi t th c hi n giao ti p v i máy ch , m t th c t t mã JavaScript c a b n. Tr c tiên, b n nh ngh)a bi u m(u s$ trông nh th nào, nh trong Li t kê 1. Li t kê 1. Bi u m u HTML
!
"# )
( '
"
$%&
'
*
'
'
Bi u m(u này sinh ra k t qu Hình 3.
u ra nh Hình 3.
u ra c a bi u m u HTML
Bi u m(u này không làm i u gì th t s có ích, nh ng hy v ng nó giúp b n b*t có th tích h p Ajax vào mã c a mình.
u th y nh ng n i mà b n
Hãy chú ý r ng s ki n onClick c xác nh trên nút nh n. S ki n này c thi t l p g i m t hàm JavaScript có tên là ajaxFunction. "ây là n i m i i u tr% nên thú v trong th gi i Ajax. Trong ph m vi ph ng th c này, b n th c hi n m t vài b c, chúng c gi i thích trong ph n này: 1. 2. 3. 4.
T o m t cá th c a i t ng XMLHttpRequest c n có. M% m t k t n i n d ch v phía máy ch mà b n mu n g i. Báo cho Ajax bi t s$ g i ph ng th c nào khi mã phía máy ch thi hành xong và tr l i k t qu . G i yêu c u.
Xây d ng các trang web d a trên Ajax b ng PHP
5. Ph n h i không
Page 4 of 11
ng b .
T o m t cá th i t ng XMLHttpRequest khi nó B n c n t o ra hàm ajaxFunction và cung c p m t bi n l u gi c t o ra. Nh v i b t k! ph ng th c JavaScript nào, b n nh ngh)a ph ng th c ó nh trong Li t kê 2. Li t kê 2.
nh ngh a c a ajaxFunction
"
"
$% +
,
&
.
H u h t các trình duy t hi n i v n ã h# tr i t ng XMLHttpRequest. Tuy nhiên, các trình duy t c h n nh Internet Explorer 6 òi h+i b n ph i t o ra m t i t ng ActiveX th c hi n vi c g i không ng b n máy ch . "i u này gây ra m t v n vì b n ph i xác nh mã c a b n ang ch y trong trình duy t nào và t o ra úng i t ng làm c vi c. Mã JavaScript cung c p m t gi i pháp b ng s h# tr c a nó i v i kh i ch c n ng th /b*t (try/catch). B n ch& c n th t o ra các i t ng theo th t u tiên và kh i try/catch x lý ph n còn l i, t ng t nh mã a ra trong Li t kê 3. Li t kê 3. T o
it
"
ng XMLHttpRequest thích h p
" ,
$% + &
+ ''
/ * ,
. " ": $ % + '' *
6 7,
0
0 8 9
1- 2 $%&
3-45/ (
-
;-
+ ,
"
62
" $
<-6 7,))
%&
. "
": $ % + + , . " ": $ % +
"
62
" $
"
-6 7,))
%&
& . . . .
Nh b n ã th y, t t c các trình duy t hi n i c vi t h# tr vi c t o nguyên th y i t ng XMLHttpRequest. Có m t tranh lu n v vi c Microsoft® có th t s h# tr i t ng XMLHttpRequest nguyên th y không hay ch& n gi n là bao gói m t tri n khai th c hi n ActiveX b ng cách s d ng m t m t ngoài.
M m tk tn i
n máy ch
Bên trong chính hàm JavaScript y, sau khi t o ra i t ng XMLHttpRequest, b n ti p t c b ng vi c m% m t k t n i n k ch b n l nh phía máy ch b ng cách s d ng ph ng th c open c a i t ng XMLHttpRequest. Ph ng th c này ti p nh n hai tham s b*t bu c và ba tham s tùy ch n, nh mô t trong B ng 1. TB ng 1. Các tham s c a ph
ng th c open
Xây d ng các trang web d a trên Ajax b ng PHP
Page 5 of 11
Tham s
Mô t
method
Ch& rõ ph
url
Ch& rõ ng d(n tuy t i ho c t ng i n d li u XML hay d ch v web XML phía máy ch mà b n mu n g i ra. " ng n ch n các t n công qua k ch b n l nh xuyên trang (cross-site scripting attacks), các yêu c u Ajax ch& c th c hi n cho URL v i cùng giao th c, máy ch , và c ng nh trang ch a yêu c u Ajax. M c dù m t s trình duy t có th cho phép các URL tu! ý, b n không nên d a vào h# tr này t t t c các trình duy t. N u b n c n giao ti p xuyên trang (cross-site communication), nó ph i cx lý % phía máy ch b ng cách s d ng cURL ho c m t s ph ng ti n khác.
async
True n u b n mu n g i yêu c u n máy ch theo ki u không ng b . C ng c n ph i gán tham s này là true n u b n ã b t (set) thu c tính onreadystatechange, i u mà tôi s$ th o lu n ngay sau ây. Gán tr tham s này là false s$ ng n ch n h u h t các trình duy t ti p nh n thêm b t c u vào nào t ng i s d ng. N u ng d ng c a b n là linh ho t ti p t c nh n d li u u vào trong khi ho t ng m t sau (back-end operation) hoàn t t, t t nh t là th c hi n hành ng c a b n không ng b .
user
Ch& rõ m t tên ng i s d ng c s d ng vào m c ích xác th c ng k ch b n l nh. Vi c này ch& c n thi t khi k ch b n yêu c u xác th c ng
ng th c HTTP mà b n mu n s d ng. Các giá tr kh d) g m GET, POST, PUT ho c HEAD.
i s d ng tr i s d ng.
password Ch& rõ m t m t kh,u c s d ng vào m c ích xác th c ng i s d ng tr l nh. Vi c này ch& c n thi t khi k ch b n yêu c u xác th c ng i s d ng.
c khi th c thi
c khi th c thi k ch b n
" i v i ví d này, ch& c n th c hi n m t thao tác GET yêu c u m t k ch b n l nh trên máy ch tr v ngày gi (time) hi n t i. B n c ng báo cho ph ng th c open bi t r ng b n mu n th c hi n không ng b thao tác này, nh trong Li t kê 4. Li t kê 4. G i ph "
ng th c open "
$% +
,
-
$ =0) /
- :
/
%&
.
Báo cho Ajax bi t g i ph
ng th c nào khi mã phía máy ch thi hành xong
Khi b n g i máy ch b ng cách s d ng Ajax, k t qu ph n h i s$ g i l i thông qua hàm callback. B n có th t o ra và t tên m t hàm ho c t o ra m t hàm không tên, nh tôi ã th c hi n. Trong tr ng h p nào thì b n c ng c n báo cho i t ng XMLHttpRequest bi t hàm callback nào c s d ng b ng cách thi t t thu c tính onReadyStateChange c a nó, nh trong Li t kê 5. Li t kê 5. Thi t
t thu c tính onReadyStateChange
"
"
$% +
,
-
": $
,
-
" >%
(
$% +
+ '' = -
" ,
: -
-
: ,
? -
)
&
&
. . .
Nh b n ã th y, ph ng th c này ki m tra readyState sau khi nó là 4. Có n m tr ng thái kh d), chúng c mô t trong B ng 2. B ng 2. Các giá tr kh d
i v i readyState
c g i, tìm ki m m t giá tr kh d)
Xây d ng các trang web d a trên Ajax b ng PHP
Giá tr
Mô t
0
Không
1
"ang n p
2
N p xong
3
T
4
Hoàn t t
Page 6 of 11
c kh%i t o
ng tác
Mã này v c b n nói r ng, “N u tr ng thái nói r ng thao tác này ã hoàn t t, thì ti p t c.” Khi tr ng thái là ã hoàn t t, b c ti p theo là c p nh t ph n c a trang c n ph i c p nh t b ng ph n h i t máy ch . "i u này c th c hi n b ng cách l y giá tr ã c gán cho thu c tính responseText, giá tr này c i n b%i ph n h i t máy ch . Cu i cùng, b n ng ng i t ng XMLHttpRequest l i b ng cách gán cho nó giá tr null.
G i yêu c u Ch& c n m t b c n a mà ajaxFunction ph i th c hi n, và ó là g i yêu c u cho máy ch . "i u này c th c hi n v i ph ng th c send c a i t ng XMLHttpRequest. N u yêu c u là không ng b , ph ng th c tr v ngay l p t c sau khi g i yêu c u. N u nó là ng b , ph ng th c này ch& tr v sau khi nh n c ph n h i, i u ó có ngh)a là ch c n ng Ajax b khóa l i n khi ph ng th c ó tr v . Ph ng th c này có m t tham s mà b n có th gán giá tr null ho c m t s các giá tr khác. Thí d b n có th truy n cho nó m t i t ng DOMDocument, m t InputStream, ho c m t String. Giá tr cs d ng nh là ph n thân c a yêu c u HTTP n u ph ng th c yêu c u là POST. Hàm ajaxFunction hoàn ch&nh s$ gi ng nh Li t kê 6. Li t kê 6. Hàm ajaxFunction hoàn ch nh "
" ,
$% + &
+ ''
/ * 0 1- 2 3-45/ ( , 6 7, 8 9 $%& . " ": $ % + '' * 0 ;+ , " 62 " $ <-6 7,)) %& . " ": $ % + + , " 62 " $ " -6 7,)) %& . " ": $ % + $ @ A 6B %& & . . . , $ =0) / - : / %& , ": " $% + $ , ( >% + '' = : : ? " , ) & , & . . , $ %& .
Ph n h i không
ng b
Do s phát tri n Ajax có b n ch t là không ng b , b n ph i c,n th n v i s t ng tranh và hãy quan tâm n chu#i x lý c a b n. "i u này c bi t quan tr ng khi b n th c hi n nhi u l i g i Ajax và nh n c các ph n h i theo m t trình t không bi t tr c. Quy t*c ngón tay cái là hãy ch i i u b t ng . Có th có nh ng l n mà ph n h i t máy ch c n quay tr% l i máy khách nh là m t tài li u XML. Trong nh ng tr ng h p nh th , b n có th s d ng thu c tính responseXML c a i t ng XMLHttpRequest
Xây d ng các trang web d a trên Ajax b ng PHP
Page 7 of 11
l y ra d li u. Li t kê 7 th hi n k ch b n l nh PHP s$ nh th nào trong tr
ng h p này.
Li t kê 7. Mã PHP tr v m t tài li u XML C : D
8 "
(
$DE=0)F?9
": ? C ? " ?& :
H-4
$D ": ": ": ":
#
":E
- D - D - D
F? # ?G ' # F? ?G ' F? ?G ' - D F? " &
" ? '"
*(2I33JKIH C ? -
9 E
' . ": C
"
?G&
"
$D
%% + & & & ?G -
?&
Nh b n ã bi t, mã t o ra m t tài li u XML, bi u hi n b ng dòng '<?xml version="1.0" encoding="ISO-8859-1"?>' tr c khi g i ph n còn l i c a ph n h i. Mã phía khách ph i c vi t sao cho nó tr c tiên s$ rút ra tài li u XML t thu c tính responseXML phân tích d li u b ng cách s d ng DOM (Mô hình " i t ng Tài li u), và sau ó hi n th d li u trên trang b ng cách s a i các tr ng thích h p ã có s-n trên trang ó. Li t kê 8 th hi n các thao tác này. Li t kê 8. Mã JavaScript x lý m t tài li u XML " $
!: , L " " L " L " L " L
""""-
$% + >%
( , 0 0 0 0 0 0 0 0
M * $ M ) M * $ M ) M * $ M ) M * $ M )
+ 6 7& # %,) 7 N $ # %F4G-": N F4G%,) 7 N $ %F4G-": N F4G%,) 7 N $ %F4G-": N F4G" %,) 7 N $ " %F4G-": N
O
& O
O F4G-
& & O
&
. .
M r ng Ajax b ng các khung công tác JavaScript B n h.n ã nh n th y r ng ch.ng có gì c bi t c n thi t t mã PHP phía máy ch th c hi n các ch c n ng Ajax % m t tr c. Trên th c t , b n có th th c s vi t k ch b n l nh phía máy ch b ng b t k! ngôn ng nào mà máy ch web c a b n có th g i th c hi n và tr l i k t qu c a nó cho trình khách. Tuy nhiên, có m t s sáng ki n m% r ng Ajax làm các vi c khác. Thí d , có m t s th vi n cung c p nhi u i u khi n (controls) m t tr c h p d(n tr c quan h n nhi u bi n c m c a Web 2.0 thành hi n th c. H u h t các th vi n này c vi t b ng mã JavaScript và cung c p các c tính và API làm gi m b t s l ng mã JavaScript b n c n vi t % m t tr c. C ng ph bi n trong h u h t các th vi n này là vi c s d ng Ký pháp " i t ng JavaScript (JavaScript Object Notation - JSON); ó là m t nh d ng trao i d li u g n nh/ c s d ng trên toàn b Internet hi n nay. Sau ây là m t s th vi n mà b n có th th y b ích: Prototype Script.aculo.us Dojo jQuery
Prototype Prototype cung c p mã JavaScript d a theo l p (class-driven) phát tri n các ng d ng web ng. Ngoài ra, khung công tác Prototype cung c p m t i t ng Ajax toàn c c, làm cho d0 vi t các hàm Ajax c a b n h n, và th m chí là d0 x lý h n. S d ng khung công tác này phát tri n Ajax c a b n còn mang l i l i
Xây d ng các trang web d a trên Ajax b ng PHP
Page 8 of 11
ích b sung là b n không còn ph i x lý các v n xuyên nhi u trình duy t (cross-browser) n a. V i m t l n g i, b n có th cung c p URL ích, ph ng th c HTTP (POST ho c GET), ph ng th c g i l i ph n h i (response callback method), và nhi u th khác.
Script.aculo.us M t khung công tác JavaScript ph bi n khác có m t s i u khi n (controls) giao di n ng i s d ng /p m*t là Script.aculo.us. Khung công tác này cung c p m t i u khi n th c hi n các ch c n ng Ajax cho b n. Th m chí có m t i u khi n tr ng v n b n t ng hoàn t t gi ng nh ki u Google mà b n có th s d ng l y v n b n t ng i s d ng c a b n. Các ch c n ng Ajax cho phép b n d0 dàng xác nh c m c tiêu truy v n bên phía máy ch . Ph n h i k t qu c s d ng hi n th m t t p h p các xâu ký t mà máy ch tr v cho ng i s d ng cu i cùng nh là các l a ch n kh d).
Dojo B công c Dojo là m t khung công tác Javascript và Ajax mã ngu n m%, n i ti ng vì t c c a nó và kích th c ch& 25KB. Trong v ài Ajax, Dojo cung c p các API c a chính nó g i và nh n các cu c g i không ng b n và t m t máy ch . Không có gì thay i % phía máy ch . Mã PHP c a b n ti p t c ph n h i gi ng nh nó luôn luôn làm i v i b t k! l i g i Ajax nào.
jQuery jQuery th c hi n m t công vi c tuy t v i là n gi n hoá c ch tìm ki m các ph n t trong các trang c a b n và b sung các ch c n ng m i, c tính m i, và nh d ng ngay trong khi ang ch y thi hành (on the fly at runtime). Nó c ng g m c m t s c tính Ajax c bi t cho phép b n cung c p các t ng tác Ajax trên các trang Web c a b n.
M r ng PHP
h tr
Ajax
Bây gi b n ã hi u nh ng i u c b n, tôi s$ cho b n th y hi n nay PHP ang c m% r ng nh th nào h# tr Ajax. T ph i c nh PHP, vi c m% r ng Ajax không ch& là vi c vi t l i mã truy c p XMLHttpRequest (XHR). Bây gi b n ã hi u nh ng i u c b n, tôi s$ cho b n th y hi n nay PHP ang c m% r ng nh th nào h# tr Ajax. T ph i c nh PHP, vi c m% r ng Ajax không ch& là vi c vi t l i mã truy c p. Các d ch v m t tr c c n c tính n bao g m thi hành d ch v m t sau, truy c p m t c s% d li u, và th c hi n các d ch v m ng m t sau t m t tr c. M t s khung công tác mà tôi ã th y trên th tr ng cho phép các nhà phát tri n vi t mã c a h trong ngôn ng m t sau (back-end language), và khung công tác này t o ra mã JavaScript m t tr c. V c b n, b n báo cho nó bi t các ph ng th c m t sau nào ph i c g i, và khung công tác này vi t ra c u trúc ngoài m t tr c (front-end façades) b ng mã JavaScript; mã này có th c p phát m t i t ng XHR, g i yêu c u, nh n ph n h i, và sau ó chuy n nó t i m t hàm tùy theo l a ch n c a b n ho c th m chí gán u ra tr c ti p t i m t ph n t HTML mà b n l a ch n. Ý t %ng là gi m b t s l ng mã JavaScript mà b n ph i vi t. V i suy ngh) y, t t c các ph n t mà b n mu n cung c p các hàm cho chúng có th c ghi è và bu c n i v i các ph ng th c m t sau; các ph ng th c m t sau này ph n ng l i khi x y ra m t s ki n m t tr c ã nh. Sau ây là các khung công tác áng c nghiên c u: PHP AJAX PHP-Ext ExtPHP
PHP AJAX PHP AJAX cho phép b n m% r ng m t l p PHP b ng l p c a riêng b n. Sau ó b n ch& c n g i ra m t ph ng th c kh%i t o khi t p tin PHP c a b n c g i ra, và nó t o ra mã XHR m t tr c c n thi t cho b n. Sau ó, s ki n m t tr c ph i g i m t hàm JavaScript v i tên gi ng nh tên l p PHP c a b n. Mã này trông gi ng nh Li t kê 9. Li t kê 9. M r ng PHP AJAX b ng l p PHP c a riêng b n "
E "
: $% +
. " .
$% +
+
Xây d ng các trang web d a trên Ajax b ng PHP
"
Page 9 of 11
$% +
. .
Các ph ng th c ghi è c g i ra th c hi n các nhi m v khác nhau trong vòng i c a Ajax. Thí d , n u m t hành ng c thi hành % m t tr c, ph ng th c main() c a l p % m t sau c g i ra x lý hành ng này. B t c d li u u vào nào thu th p % m t tr c u c chuy n t i ph ng th c input().
PHP-Ext PHP-Ext cung c p m t th vi n c vi t h# tr cho c PHP 4 và PHP 5, cung c p nhi u i u khi n giao di n ng i s d ng % m t tr c. C s% n m d i c a các i u khi n này th c s c Ext JS cung c p, nh ng cái làm cho khung công tác này là duy nh t là % ch# b n không ph i t p trung vào vi c cung c p JavaScript thao tác các i u khi n m t tr c. Thay vào ó, toàn b t ng tác v i các i u khi n c th c hi n b ng cách s d ng các d ch v m t tr c c vi t b ng PHP. Mã PHP c g i ra khi c n thi t, tùy thu c vào các s ki n mà b n ã ch& nh rõ r ng b n mu n x lý s ki n y. Khi xu t hi n m t s ki n ã ng ký, ph ng th c PHP phù h p c g i ra trong mã c a b n. V i cách này, b n có th i n vào n i dung c a các ô l i ch nh t bài trí giao di n và các i u khi n khác g n nh là tr c ti p t mã PHP c a b n.
ExtPHP Theo nhà phát tri n ng u d án, b n có th dùng PHP-Ext vi t ra mã JavaScript xâm nh p và không xâm nh p (intrusive and non-intrusive), úng nh b n có th s$ làm v i Ext JS. L i i m là % ch# thi t k này cho phép b biên t p PHP c a b n phát hi n c các tên ph ng th c ch a có, có l#i chính t ho c s d ng sai ch không ph i là bu c b n g1 l#i mã JavaScript trong trình duy t Web. Ý t %ng ng sau ExtPHP là t o ra các l p PHP mà có th c g i t các k ch b n l nh PHP. Khi b n kh%i t o m t i t ng, mã JavaScript t ng ng c l u l i trong m t b m trong. N u b n g i ra m t ph ng th c c a i t ng, mã này s$ c thêm vào b m trong (internal buffer). Khi b n ã s-n sàng hoàn t t mã JavaScript, b n ch& c n g i ra m t ph ng th c n l', jsrender(). B n c ng có th b sung tr c ti p mã JavaScript vào u ra c a b n b ng cách g i ra các hàm ExtPHP cho phép b n thêm vào u ra.
Tóm t t Bài vi t này cung c p cho b n m t ki n th c nh p môn v vi t mã m t tr c d a trên Ajax và sau ó ch& cho b n bi t cách k t h p mã m t tr c v i k ch b n l nh PHP m t sau. Nó c ng d(n b n n m t s khung công tác s-n có m i nh t cho phép b n t o ra các ng d ng web d a trên Ajax nhanh h n nhi u so v i b n t vi t ra toàn b mã. B ng cách k t h p m t ho c hai khung công tác y v i Ajax và PHP, b n có th vi t ra các ng d ng web tr c quan h p d(n và phong phú. Th c t b n có th t h+i làm sao mà b n l i t ng vi t c các ng d ng web c a b n không có các công ngh m i y.
Tài nguyên H ct p JavaScript.com là m t ngu n tài nguyên l n liên quan n nó.
tìm hi u v mã JavaScript và các công ngh s*p t i
Trang web PHP Ajax Frameworks cung c p m t danh m c các khung công tác phát tri n các ng d ng PHP/Ajax mà b n không ph i t mình mã hoá toàn b các JavaScript Ajax. Nhi u trong s các khung công tác th c hi n các công vi c n n bên d i cho b n, cho phép b n t p trung vào các m u ch t chính c a ng d ng c a b n, ch không ph i là c s% h t ng có c các giao ti p Ajax khách/ch . "Ajax & PHP without using the XmlHttpRequest Object" (PHPit, 11.2005) có m t s ý t %ng th c s khôn ngoan, nó mô t cách mà b n có th vi t mã PHP cho phép b n s d ng các ý ni m Ajax mà không ph i ph thu c vào i t ng XMLHttpRequest. Tuy nhiên, nó b h n ch ch& dùng
Xây d ng các trang web d a trên Ajax b ng PHP
ph
ng th c GET, nên n u b n c n g i làm vi c ó.
Page 10 of 11
n máy ch h n 500 byte, b n có th ph i tìm công c khác
" tìm m i th v Ajax, Ajaxian nh t nh là n i c n ph i n. "ây là m t trang web ph i xem. M i th dính dáng n Ajax u % trên trang Web này. Dù nó ph i làm b ng PHP hay m t ngôn ng khác thì b n v(n s$ tìm th y nó % ây. M% r ng các k2 n ng web c a b n b ng các bài vi t và h ng d(n chuyên môn hoá v các công ngh web trong Web development zone c a developerWorks. " ng hành v i Technical events and webcasts c a developerWorks. L y s n ph m và công ngh N u JavaScript ã c n p b ng m t API ho c Khung công tác ã c nâng c p, nó s$ là Prototype. Khi JavaScript API k t thúc, Prototype s$ n i ti p. Khung công tác này ã tr% thành tiêu chu,n c các nhà phát tri n khung công tác JavaScript khác s d ng nh là khung công tác c s%, trên ó xây d ng các khung công tác m i. Trên th c t , script.aculo.us c xây d ng trên khung công tác này. Th vi n script.aculo.us cung c p m t s i u khi n UI /p nh t mà tôi t ng th y. Tôi ã giành th*ng l i m t cách d0 dàng t nhi u khách hàng h nh phúc nh th vi n nh+ ti n d ng này. JSON là m t nh d ng trao i d li u h ng nh/ mà con ng i có th c c và máy tính d0 dàng phân tích cú pháp c. Không ch& dành cho mã JavaScript mà thôi, JSON ã c thêm vào ngôn ng PHP % phiên b n 5.2.0. Ext JS là m t khung công tác Javascript v i các thành ph n Ajax và UI. Nó làm vi c cùng v i Prototype, Yahoo UI, và jQuery. Có s-n c gi y phép mã ngu n m% và gi y phép th ng m i cho d án này. Dojo cung c p Ajax, các s ki n, óng gói, vi c truy v n d a trên CSS, và nhi u th n a trong m t gói nh+ g n. jQuery là m t th vi n JavaScript n gi n hoá cách b n i ngang qua các tài li u HTML, x lý s ki n, và th c hi n ho t hình. Nó c ng có m t s tính n ng Ajax cho phép b n d0 dàng thêm Ajax vào HTML m t tr c c a b n g i các k ch b n l nh phía máy ch % m t sau. PHP AJAX là m t khung công tác t o ra toàn b mã JavaScript c n thi t ngay trong khi ch y thi hành sau khi t p tin PHP c g i ra. B n vi t m t l p PHP mà m% r ng m t l p PHP Ajax và vi t è các ph ng th c x lý các l i g i m t tr c t i m t sau. PHP-Ext PHP-Ext là m t th vi n widget mã ngu n m% d a trên Ext JS, cung c p cho các nhà phát tri n kh n ng vi t các k ch b n l nh PHP thay cho mã JavaScript. ExtPHP ExtPHP là m t th vi n mà b n có th s d ng nh p, úng nh cách b n có th làm v i Ext JS. Th o lu n Xem qua developerWorks blogs và tham gia vào c ng
vi t JavaScript xâm nh p và không xâm
ng developerWorks.
ôi nét v tác gi Ken Ramirez là ng i sáng l p T p oàn Công ngh Axsys Technology Group, t p oàn này cung c p d ch v ch ch a Web (hosting) và phát tri n trang web tu! ch&nh thông qua Axsys
Xây d ng các trang web d a trên Ajax b ng PHP
Page 11 of 11
Hosting. Ken c ng làm vi c v i các ch doanh nghi p nh+, nh ng ng i ang tìm ki m các gi i pháp trang web không *t ti n qua trang web http://www.BuildMySiteTonight.com c a ông. Công ty ông chuyên v PHP, MySql, Linux, XHTML/CSS, Adobe Flash, các gi i pháp th ng m i i n t , và các gi i pháp qu n lý n i dung.
Java và t t c các nhãn hi u và bi u t ng d a trên Java là các th ng hi u c a Sun Microsystems, Inc. t i Hoa K!, các qu c gia khác, ho c c hai. Microsoft, Windows, Windows NT, và bi u t ng Windows là các th ng hi u c a T p oàn Microsoft t i Hoa K!, các qu c gia khác, ho c c hai. Các tên công ty, s n ph,m, ho c d ch v khác có th là tên nhãn hi u hàng hóa ho c d ch v c a các hãng khác. Các tên công ty, s n ph,m, ho c d ch v khác có th là các tên nhãn hi u hàng hóa ho c d ch v c a các hãng khác. Tên c a công ty, s n ph,m hay d ch v có th là nhãn hi u ng ký ho c nhãn hi u d ch v c a ng i khác.