Ajax_All_About - ‫ھﻤﻪ ﭼﯿﺰ درﺑﺎره...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ‫ھﻤﻪ ﭼﯿﺰ درﺑﺎره ‪Ajax‬‬ ‫واژه ‪ Ajax‬ﺳﺮﻧﺎم ﻋﺒﺎرت ‪ A synchronous JavaScript and XML‬و ﺑ ﻪ ﻣﻌﻨﻲ< ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ‪ XML‬آﺳﻨﻜﺮون‬ ‫ﻳﺎ ﻧﺎﻣﺘﻘﺎرن >اﺳﺖ. ايﺟﻜﺲ ﻓﻨﺎوري ﺟﺪﻳﺪي اﺳﺖ ﻛﻪ ﺑ ﻪ ﻛﻤﻚ آن ﻣﻲﺗﻮان اﻳﻨﺘﺮﻓﯿﺲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺗﺤﺖ وب را‬ ‫ﻃﻮري ﺳﺎﺧﺖ ﻛﻪ وﻗﺘﻲ ﻛﺎرﺑﺮ روي دﻛﻤﻪ ﻳﺎ ﻟﯿﻨﻜﻲ ﻛﻠﯿﻚ ﻣﻲﻛﻨﺪ، ﻛﻠﯿﻪ ﻋﻤﻠﯿﺎت ارﺳﺎ ل اﻃﻼﻋﺎت و درﻳﺎﻓﺖ‬ ‫ﻧﺘﺎﻳﺞ در ﭘﺸﺖ ﺻﺤﻨ ﻪ اﻧﺠﺎم ﺷﻮد و ﻓﻘﻂ آن ﻗﺴﻤﺖ از اﻳﻨﺘﺮﻓﯿﺲ ﻛ ﻪ ﻗﺮار اﺳﺖ اﻃﻼﻋﺎت ﺟﺪﻳﺪ را ﺑﻪ ﻧﻤﺎﻳﺶ‬ ‫درآورد ﺗﻐﯿﯿﺮ ﻛﻨﺪ ﺑﺪون اﻳﻨﻜﻪ ﺗﻤﺎم ﺻﻔﺤ ﻪ از ﻧﻮ ﺑﺎرﮔﺬاري ﺷﻮد. در اﻳﻦ ﻣﻘﺎﻟ ﻪ ﻣﻲﺧﻮاھﯿﻢ اﻳﻦ ﻓﻨﺎوري ﻧﻮﻳﻦ و‬ ‫ﺗﺤﻮ ل آﻓﺮﻳﻦ را از ﺟﻨﺒﻪ ھﺎي ﻣﺨﺘﻠﻒ ﻣﻮرد ﺑﺮرﺳﻲ ﻗﺮار دھﯿﻢ و ﺑﺎ ﻣﺒﺎﻧﻲ ﻓﻨﻲ آن آﺷﻨﺎ ﺷﻮﻳﻢ .‬ ‫ﻛﻤﺮﺑﻨﺪھﺎ را ﺑﺒﻨﺪﯾﺪ‬ ‫آﻳﺎ از دﻧﯿﺎي ﻛﻼﺳﯿﻚ وب ﺧﺴﺘﻪ ﺷﺪهاﻳﺪ؟ آﻳﺎ ﻣﺎﻳﻠﯿﺪ ﺑﺎ ﭼﮫﺮه ﺟﺪﻳﺪ وب آﺷﻨﺎ ﺷﻮﻳﺪ؟ آﻳﺎ ﻣﻲﺧﻮاھﯿﺪ ﺑﺎ‬ ‫ﺟﺪﻳﺪﺗﺮﻳﻦ ﻓﻨﺎوري دﻧﯿﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ وب آﺷﻨﺎ ﺷﻮﻳﺪ؟ ﺑﺮاي ﭘﺮواز آﻣﺎده ﺑﺎﺷﯿﺪ! ﻣﻘﺼﺪ ﻣﺎ ﻳﻜﻲ از اﺳﺘﺎن ھﺎي‬ ‫ﻛﺸﻮر ﺟﺪﻳﺪ اﻟﺘﺎﺳﯿﺲ 0.2 ‪ Web‬اﺳﺖ. ﻣﻲﺧﻮاھﯿﻢ ﺑﺎ ھﻢ ﺑﻪ دﻧﯿﺎي ھﯿﺠﺎن اﻧﮕﯿﺰ ‪ Ajax‬ﺳﻔﺮ ﻛﻨﯿﻢ.‬ ‫در ﺳﺮزﻣﯿﻦ ايﺟﻜﺲ ﭼﮫﺮه ﺳﺎﻳﺖھﺎي وب ﻣﺎﻧﻨﺪ ﻧﺮماﻓﺰارھﺎي روﻣﯿﺰي ﺑﻪ ﻧﻈﺮ ﻣﻲرﺳﻨﺪ. اﻛﻨﻮن وب ﺧﺎﻧﻪ دوم‬ ‫اﻃﻼﻋﺎت دﻳﺠﯿﺘﺎﻟﻲ ﺷﻤﺎ اﺳﺖ. ﺣﺎﻻ ﻛ ﻪ ﺑﺎ داﺷﺘﻦ ﻳﻚ ﺧﻂ اﻳﻨﺘﺮﻧﺖ ﭘﺮﺳﺮﻋﺖ ﻣﻲﺗﻮاﻧﯿﺪ در ﺗﻤﺎم ﻃﻮ ل ﺷﺒﺎﻧ ﻪ‬ ‫روز ﺑﻪ اﻳﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺑﺎﺷﯿﺪ، وﻗﺖ آن ﻓﺮارﺳﯿﺪه ﻛ ﻪ ﻧﺮماﻓﺰارھﺎي ﺗﺤﺖ وب ﻧﯿﺰ ﻣﺘﺤﻮل ﺷﻮﻧﺪ و ﻛﺎرﻛﺮد و‬ ‫ﻗﺎﺑﻠﯿﺘﻲ ﻣﺎﻧﻨﺪ ﻧﺮماﻓﺰارھﺎي روﻣﯿﺰي داﺷﺘ ﻪ ﺑﺎﺷﻨﺪ. ﺑ ﻪ اﻳﻦ ﺗﺮﺗﯿﺐ ﻓﺎﺻﻠﻪ و ﺗﻔﺎوت ﻣﯿﺎن ﻧﺮماﻓﺰارھﺎي دﺳﻜﺘﺎپ و‬ ‫ﻧﺮماﻓﺰارھﺎي آﻧﻼﻳﻦ ﻧﺎﭘﺪﻳﺪ ﻣﻲﺷﻮد. دﻳﮕﺮ ﻻزم ﻧﯿﺴﺖ وﻗﺘﻲ روي دﻛﻤﻪ ‪ submit‬ﻛﻠﯿﻚ ﻣﻲﻛﻨﯿﺪ ﻣﻨﺘﻈﺮ ﺑﺎرﮔﺬاري‬ ‫ﻣﺠﺪد ﺻﻔﺤﻪ وب ﺑﻤﺎﻧﯿﺪ. ھﻤﻪﭼﯿﺰ ﻓﻮرا و ﺑﻪ ﺳﺮﻋﺖ اﺗﻔﺎق ﻣﻲاﻓﺘﺪ .‬ ‫ﺗﺼﻮر ﻛﻨﯿﺪ ﺑﻪ ﺻﻮرت آﻧﻼﻳﻦ در ﺣﺎل ﺧﻮاﻧﺪن ﻧﺎﻣﻪ ھﺎي اﻟﻜﺘﺮوﻧﯿﻜﻲ ﺧﻮد در ﻳﻜﻲ از ﺳﺎﻳﺖ ھﺎي ﻳﺎھﻮ ﻳﺎ ﺟﻲﻣﯿﻞ‬ ‫ھﺴﺘﯿﺪ. ﻓﻮرا ﻳﺎدﺗﺎن ﻣﻲاﻓﺘﺪ ﻛﻪ ﺑﺎﻳﺪ ﺑﻪ ﻛﺴﻲ ﻧﺎﻣﻪاي ﺑﻔﺮﺳﺘﯿﺪ. ﻻزم ﻧﯿﺴﺖ ﺻﻔﺤﻪاي ﻛ ﻪ در ﺣﺎل ﻣﻄﺎﻟﻌ ﻪ آن‬ ‫ھﺴﺘﯿﺪ را ﺗﺮك ﻛﻨﯿﺪ و ﻳﺎ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺮﻓﻨﺪھﺎﻳﻲ ﻣﺎﻧﻨﺪ راﻳﺖ ﻛﻠﯿﻚ و ﻓﺮﻣﺎن ‪ Open in New window‬ﻳﻚ ﭘﻨﺠﺮه‬ ‫ﺟﺪﻳﺪ ﺑﺎزﻛﻨﯿﺪ و ﻣﻨﺘﻈﺮ ﺑﺎرﮔﺬاري ﻣﺠﺪد ﺻﻔﺤ ﻪ ﺷﻮﻳﺪ. ﺷﻤﺎ ﻓﻘﻂ ﻣﻲﺧﻮاھﯿﺪ ﻳﻚ ﭘﻨﺠﺮه ﺟﺪﻳﺪ ﺑﺎز ﻛﻨﯿﺪ ﻛﻪ‬ ‫داﺧﻠﺶ ﻧﺎﻣﻪ ﺧﻮد را ﺗﺎﻳﭗ ﻛﻨﯿﺪ .‬ ‫ﭼ ﻪ ﻧﯿﺎزي ﺑ ﻪ ﺑﺎرﮔﺬاري ﻣﺠﺪد آنھﻤﻪ اﻃﻼﻋﺎت ﺟﺰﺋﻲ و ﺟﻨﺒﻲ )ﻣﺎﻧﻨﺪ ﻟﻮﮔﻮي ﺳﺎﻳﺖ، ﻧﺎم آﻳﺪي ﺷﻤﺎ و ...(‬ ‫اﺳﺖ ﻛﻪ در اﻃﺮاف اﻃﻼﻋﺎت اﺻﻠﻲ ﺑﻪ ﻧﻤﺎﻳﺶ درآﻣﺪهاﻧﺪ؟ ايﺟﻜﺲ ھﻤﯿﻦ ﻛﺎر را ﺑﺮاي ﺷﻤﺎ ﻣﻲ ﻛﻨﺪ. وﻗﺘﻲ ﻛﻪ‬ ‫ﻧﺎﻣﻪ ﺧﻮد را ارﺳﺎل ﻛﺮدﻳﺪ ﻧﯿﺰ ﻓﻘﻂ ھﻤﺎن ﭘﻨﺠﺮه ﺑﺴﺘﻪ ﻣﻲﺷﻮد و ﭼﻨﺪ ﺑﺎﻳﺖ ﺑﺮاي ﺳﺎﻳﺖ ﻣﻘﺼﺪ ارﺳﺎل‬ ‫ﻣﻲﺷﻮد و اﻳﻨﺘﺮﻓﯿﺲ ﺻﻨﺪوق ﭘﺴﺘﻲ ﻧﺎﻣﻪھﺎي ﺷﻤﺎ ﺑﺪون اﻳﻦﻛﻪ ﺗﻜﺎن ﺑﺨﻮرد و ﻳﺎ دوﺑﺎره ﺑ ﻪ ﻧﻤﺎﻳﺶ درآﻳﺪ‬ ‫ھﻤﭽﻨﺎن ﭘﯿﺶ ﭼﺸﻢ ﺷﻤﺎ و ﻣﻨﺘﻈﺮ ﻓﺮﻣﺎن ﺑﻌﺪي اﺳﺖ. در دﻧﯿﺎي ايﺟﻜﺲ دﻛﻤﻪھﺎي ‪ Back‬و ‪Forward‬‬ ‫ﻣﺮورﮔﺮ ﻣﻌﻨﻲ و ﻛﺎرﺑﺮد ﺧﻮد را ﺗﻘﺮﻳﺒﺎ از دﺳﺖ ﻣﻲدھﻨﺪ .‬ ‫ھﻤﻪ دﻛﻤﻪھﺎي ﻣﻮرد ﻧﯿﺎز داﺧﻞ اﻳﻨﺘﺮﻓﯿﺲ ﺳﺎﻳﺖ ﻣﻮﺟﻮد اﺳﺖ. ﺑﺮﺧﻼف ﺟﮫﺎن0.1 ‪ ، Web‬در دﻧﯿﺎي ايﺟﻜﺲ‬ ‫ﮔﺸﺖ و ﮔﺬار در وب ﻟﺰوﻣﺎ ﺧﻄﻲ ﻧﯿﺴﺖ. اﮔﺮ ﻣﻲﺧﻮاھﯿﺪ از ﻳﻚ ﻓﺮوﺷﮕﺎه اﻟﻜﺘﺮوﻧﯿﻜﻲ ﺧﺮﻳﺪ ﻛﻨﯿﺪ، ﻣﻲﺗﻮاﻧﯿﺪ‬ ‫ﻣﺤﺼﻮ ل ﻣﻮرد ﻧﻈﺮﺗﺎن را ﺑ ﻪ روش ‪ d rag&drop‬داﺧﻞ ﺳﺒﺪ ﺑﯿﻨﺪازﻳﺪ و ﺑﺎ ﻓﺸﺮدن دﻛﻤ ﻪ ﻧﮫﺎﻳﻲ، ﺧﺮﻳﺪ ﺧﻮد را ﺛﺒﺖ‬ ‫ﻛﻨﯿﺪ .ﭘﯿﻐﺎم ﺛﺒﺖ ﻣﻮﻓﻘﯿﺖ آﻣﯿﺰ ﺳﻔﺎرش ﺑﺮاي ﺷﻤﺎ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد و ﻛﺎر ﺗﻤﺎم اﺳﺖ. ﻻزم ﻧﯿﺴﺖ از‬ ‫ﺻﻔﺤﻪ اﻟﻒ ﺑﻪ ﺻﻔﺤ ﻪ ب و ﺳﭙﺲ از آﻧﺠﺎ ﺑﻪ ﺻﻔﺤﻪ ج ﺑﺮوﻳﺪ.‬ ‫ايﺟﻜﺲ ﭼﯿﺴﺖ؟‬ ‫اﻳﻦ واژه را اوﻟﯿﻦ ﺑﺎر ﺟﺴﻲ ﺟﯿﻤﺰ ﮔﺮت)‪ ، (Jesse James Garrett‬ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ از ﺷﺮﻛﺖ ‪ Adaptive Path‬در‬ ‫ﻣﻘﺎﻟﻪاي ﺑﺎ ﻋﻨﻮان< ايﺟﻜﺲ :رھﯿﺎﻓﺖ ﺟﺪﻳﺪي در ﺑﺮﻧﺎﻣﻪ ھﺎي ﺗﺤﺖ وب >ﺑﻪ ﻛﺎر ﺑﺮد. ايﺟﻜﺲ ﺳﺮﻧﺎم ﻋﺒﺎرت‬ ‫‪Asynchronous JavaScript and XML‬و ﺑﻪ ﻣﻌﻨﻲ ﺗﺮﻛﯿﺐ ﻧﺎﻣﺘﻘﺎرن ﺟﺎوا اﺳﻜﭙﺮﻳﭙﺖ و ‪ XML‬اﺳﺖ .‬ ‫ﭼﺮا ﻧﺎﻣﺘﻘﺎرن؟ ﭼﻮن ﺗﺮﻛﯿﺐ اﻳﻦ دو ﻓﻨﺎوري ﺑﻪ ﺷﻤﺎ ﻛﻤﻚ ﻣﻲﻛﻨﺪ ﻗﺴﻤﺘﻲ از ﻳﻚ ﺻﻔﺤﻪ وب را ﺑﺮوز ﻛﻨﯿﺪ ﺑﺪون‬ ‫اﻳﻨﻜ ﻪ ﻻزم ﺑﺎﺷﺪ< ھﻤﺰﻣﺎن ﻳﺎ ﻣﺘﻘﺎرن >ﺑﺎ اﻳﻦ ﻋﻤﻞ، ﻛﻞ آن ﺻﻔﺤﻪ از ﻧﻮ ﺑﺎرﮔﺬاري ﺷﻮد. اﻳﻦ ﻋﻤﻠﯿﺎت ﺗﻮﺳﻂ‬ ‫ﺷﻲء و ﻓﺮﻣﺎﻧﻲ ﺑ ﻪ ﻧﺎم ‪ XMLHttpRequest‬اﻧﺠﺎم ﻣﻲﺷﻮد ﻛﻪ ﺳﺎلھﺎ ﭘﯿﺶ، ھﻨﮕﺎم ﻣﻌﺮﻓﻲ ﻧﺴﺨﻪ 4 ﻣﺮورﮔﺮ‬ ‫اﻳﻨﺘﺮﻧﺖ اﻛﺴﭙﻠﻮرر وارد اﻳﻦ ﻧﺮماﻓﺰار ﺷﺪه و ﺑﻪ دﻟﯿﻞ ﻗﺎﺑﻠﯿﺖھﺎي ﺟﺎﻟﺒﻲ ﻛﻪ دارد، اﻳﻦ روزھﺎ ﺗﻤﺎم ﻣﺮورﮔﺮھﺎي‬ ‫ﻣﻌﺮوف و ﻗﺪرﺗﻤﻨﺪ وب ﻣﺎﻧﻨﺪ ﻓﺎﻳﺮﻓﺎﻛﺲ و اﭘﺮا از آن ﭘﺸﺘﯿﺒﺎﻧﻲ ﻣﻲﻛﻨﻨﺪ .ﺑﻪ ﻛﻤﻚ اﻳﻦ ﺷﻲء ﻣﻲﺗﻮاﻧﯿﺪ‬ ‫ﺑﺮﻧﺎﻣﻪ ھﺎﻳﻲ ﺑ ﻪ زﺑﺎن ﺟﺎوا اﺳﻜﺮﻳﭙﺖ ﺑﻨﻮﻳﺴﯿﺪ ﻛﻪ در ﭘﺸﺖ ﺻﺤﻨﻪ ﻳﻚ ﺻﻔﺤﻪ وب اﻃﻼﻋﺎﺗﻲ را ﺑﻪ ﺳﺮور‬ ‫ﺑﻔﺮﺳﺘﻨﺪ و دادهھﺎﻳﻲ را درﻳﺎﻓﺖ ﻛﻨﻨﺪ.‬ ‫ايﺟﻜﺲ اﺳﺎﺳﺎ رھﺎوردي از دﻧﯿﺎي ﺟﺎوا اﺳﺖ و ﺑﺎر دﻳﮕﺮ ﻓﻨﺎوري ﺟﺎوا و زﺑﺎن اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ واﺑﺴﺘﻪ ﺑﻪ آن‬ ‫را در ﻛﺎﻧﻮن ﺗﻮﺟ ﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﻗﺮار داده اﺳﺖ .اﻣﺎ ﺧﺒﺮ ﺧﻮب اﻳﻨﺴﺖ ﻛﻪ ﭼﻮن ھﻤ ﻪ ﭘﻠﺘﻔﺮم ھﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‬ ‫وب از ﻗﺒﯿﻞ ‪ASP.NET ،PHP‬و ‪ JSP‬از ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ‪ XML‬ﭘﺸﺘﯿﺒﺎﻧﻲ ﻣﻲﻛﻨﻨﺪ، ﻓﻨﺎوري ايﺟﻜﺲ در ھﻤﻪ اﻳﻦ‬ ‫ﭘﻼﺗﻔﺮمھﺎ ﭘﯿﺎدهﺳﺎزي ﺷﺪه و ﺣﺘﻲ ﺟﺎﻟﺐ اﺳﺖ ﺑﺪاﻧﯿﺪ ﻛ ﻪ ﺗﻌﺪاد ﻣﺎژول ھﺎي ايﺟﻜﺲ ﻧﻮﺷﺘ ﻪ ﺷﺪه ﺑﺮاي دات‬ ‫ﻧﺖ و ‪ PHP‬ﺑﯿﺸﺘﺮ از اﻧﻮاع ﺟﺎواﻳﻲ آن اﺳﺖ.‬ ‫ﻣﺎﻳﻜﺮوﺳﺎﻓﺖ ﻛ ﻪ ﺳﺎل ھﺎ ﭘﯿﺶ از ﺷﻲء ‪ XMLHttpRequest‬در ﻧﺮماﻓﺰار ‪ Outlook Web Access‬اﺳﺘﻔﺎده ﻛﺮد و‬ ‫ﺟﺰو اوﻟﯿﻦ ﺗﺮوﻳﺞدھﻨﺪﮔﺎن اﻳﻦ ﺗﻜﻨﯿﻚ ﺑﻪ ﺷﻤﺎر ﻣﻲرود اﺧﯿﺮا ﻧﺮماﻓﺰاري ﺑ ﻪ ﻧﺎم ‪ Atlas‬ﻣﻌﺮﻓﻲ ﻛﺮده ﻛ ﻪ ﻣﺨﺼﻮص‬ ‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ اﺳﺖ. اﻣﺎ ﭼﻮن ايﺟﻜﺲ ﺑﺮ اﺳﺎس ﺟﺎوا ﻛﺎر ﻣﻲﻛﻨﺪ ﺑﺪﻳﮫﻲ اﺳﺖ ﻛ ﻪ‬ ‫ﺟﻨﺒﺶ اﭘﻦ ﺳﻮرس و ﺧﯿ ﻞ ﻋﻈﯿﻢ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﺟﺎوا ﻧﯿﺰ ﺑﯿﻜﺎر ﻧﻤﺎﻧﺪه و ﻣﻲ ﻛﻮﺷﻨﺪ ﺗﺎ دﻳﺮ ﻧﺸﺪه ‪ Ajax‬را ﺑ ﻪ‬ ‫ﻗﻠﺐ دﻧﯿﺎي ﻧﺮماﻓﺰارھﺎي آزاد ﺑﯿﺎورﻧﺪ و از اﻧﺤﺼﺎري ﺷﺪن آن ﺟﻠﻮﮔﯿﺮي ﻛﻨﻨﺪ ﺗﺎ اﻳﻦ ﻓﻨﺎوري ﺑﻪ اﺳﺘﺎﻧﺪارد ﺟﺪﻳﺪ‬ ‫وب ﺗﺒﺪﻳﻞ ﺷﻮد. ﺑﻪ ﻧﻈﺮ ﻣﻲرﺳﺪ ﻛﻪ آﻧﮫﺎ ﻣﻮﻓﻖ ﺑﻮدهاﻧﺪ زﻳﺮا ﺣﺘﻲ ﭘﯿﺎدهﺳﺎزيھﺎي دات ﻧﺘﻲ ايﺟﻜﺲ ﻧﯿﺰ‬ ‫اﻏﻠﺐ ﺑﻪ ﺻﻮرت اﭘﻦ ﺳﻮرس اﺳﺖ.‬ ‫ﻣﻜﺎﻧﯿﺰم ‪Ajax‬‬ ‫ﺟﺴﻲ ﺟﯿﻤﺰ ﮔﺮت در ﻣﻘﺎﻟﻪ ﻣﻌﺮوف ﺧﻮد ﺷﯿﻮه ﻋﻤﻞ ايﺟﻜﺲ را ﭼﻨﯿﻦ ﺗﻮﺿﯿﺢ ﻣﻲدھﺪ: ھﺮ ﻋﻤﻞ از ﺳﻮي‬ ‫ﻛﺎرﺑﺮ ﻛﻪ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮ ل ﻣﻮﺟﺐ ﺗﻮﻟﯿﺪ ﻳﻚ ﺗﻘﺎﺿﺎي ‪ HTTP‬ﺷﻮد ﺑﻪ ﺟﺎي ارﺳﺎ ل ﻣﺴﺘﻘﯿﻢ ﺑﻪ وب، ﻣﻮﺟﺐ‬ ‫ﻓﺮاﺧﻮاﻧﻲ ﻳﻚ ﻓﺮﻣﺎن ﺟﺎوا اﺳﻜﺮﻳﭙﺘﻲ و ھﺪاﻳﺖ آن ﺑ ﻪ ﻣﻮﺗﻮر ايﺟﻜﺲ ﻣﻲﺷﻮد. ھﺮ ﻧﻮع ﭘﺎﺳﺨﻲ ﺑ ﻪ ﻛﺎرﺑﺮ از‬ ‫ﺳﻮي ﺳﺮور )ﻣﺎﻧﻨﺪ ﻛﻨﺘﺮل ﺻﺤﺖ دادهھﺎي وارد ﺷﺪه در ﻳﻚ ﻓﺮم ورود اﻃﻼﻋﺎت، وﻳﺮاﻳﺶ اﻃﻼﻋﺎت در ﺣﺎﻓﻈﻪ و‬ ‫ﺣﺘﻲ ﺑﺮﺧﻲ از اﻧﻮاع ھﺪاﻳﺖ ﻛﺎرﺑﺮ در ﺳﺎﻳﺖ( ﻧﯿﺎزي ﺑﻪ ارﺳﺎ ل ﻳﻚ ﺻﻔﺤﻪ ﺟﺪﻳﺪ ﺑﻪ ﺳﻤﺖ ﻛﺎرﺑﺮ ﻧﺪارد و ﺗﻨﮫﺎ‬ ‫ھﻤﺎن ﻗﺴﻤﺘﻲ ﻛ ﻪ ﺑﺎﻳﺪ ﺗﻐﯿﯿﺮ ﻛﻨﺪ ﺑﺮوز ﻣﻲﺷﻮد .‬ ‫ﺑﻪ ﻃﻮر ﺳﻨﺘﻲ وﻗﺘﻲ ﻛﺎرﺑﺮ ﻓﺮﻣﻲ را ﭘﺮﻣﻲﻛﻨﺪ و ﺑﻪ ﺳﺎﻳﺖ ارﺳﺎل ﻣﻲﻛﻨﺪ، وب ﺳﺮور ﺑﺎ ﺑﺎرﮔﺬاري ﻣﺠﺪد ﻳﺎ‬ ‫ﺗﺎزهﺳﺎزي ﺻﻔﺤﻪ )‪ (refresh‬و ﻧﻤﺎﻳﺶ ﻳﻚ ﭘﯿﻐﺎم و ﻳﺎ ﻧﺘﯿﺠﻪ ﭘﺮدازش اﻃﻼﻋﺎت، ﺑﻪ او ﭘﺎﺳ ﺦ ﻣﻲدھﺪ و ﺑ ﻪ ھﻤﯿﻦ‬ ‫دﻟﯿﻞ ھﻢ وﻗﺖ ﺳﺮور ﺑﺮاي ارﺳﺎ ل ﻛﻞ ﻣﺤﺘﻮاي آن ﺻﻔﺤ ﻪ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد و ھﻢ ﻛﺎرﺑﺮ ﺑﺎﻳﺪ ﺑﺮاي درﻳﺎﻓﺖ ﻛﺎﻣﻞ‬ ‫آن ﺻﻔﺤﻪ ﻣﻨﺘﻈﺮ ﺑﻤﺎﻧﺪ؛ ﻛﻪ ﻧﺘﯿﺠﻪ آن ﻛﺎھﺶ ﺑﺎزده ﺳﺮور، ﻣﺼﺮف ﭘﮫﻨﺎي ﺑﺎﻧﺪ و ﺗﻠﻒ ﺷﺪن وﻗﺖ و ھﺰﻳﻨ ﻪ اﺳﺖ.‬ ‫اﻣﺎ ﺑﻪﻛﺎرﮔﯿﺮي ﺗﻜﻨﯿﻚ ايﺟﻜﺲ اﻳﻦ ﻣﺸﻜﻼت را ﺑﻪ ﻃﺮز ﻗﺎﺑﻞﻣﻼﺣﻈﻪاي ﻛﺎھﺶ ﻣﻲدھﺪ.‬ ‫ﮔﻮﮔ ﻞ ﺑﺎز ھﻢ ﭘﯿﺸﺘﺎر‬ ‫ھﻤﺎﻧﻄﻮر ﻛﮫ ﺟﺴﻲ ﺟﯿﻤﺰ ﮔﺮت ﻣﻲﻧﻮﯾﺴﺪ، ﮔﻮﮔﻞ در ﻣﯿﺎن ﺳﺎﯾﺖھﺎي اﯾﻨﺘﺮﻧﺘﻲ از ﻧﻈﺮ ﻣﯿﺰان ﺑﮫﻛﺎرﮔﯿﺮي ﻓﻨﺎوري ايﺟﻜﺲ ﭘﯿﺸﺘﺎز اﺳﺖ و‬ ‫اﯾﻦ ﺗﻜﻨﯿ ﻚ را در ﻧﺮماﻓﺰار ﺳﺎﯾﺖھﺎي ‪ ،Google Groups،Gmail ، Orkut‬ﺳﯿﺴﺘﻢ ‪ Google Suggest‬و ﺳﺮوﯾﺲ‬ ‫‪Google Maps‬ﺑﮫ ﻛﺎر ﺑﺮده اﺳ ﺖ. ھﻤﭽﻨﯿﻦ ﺑﮫ ﮔﻔﺘﮫ ﮔﺮت ﺑﺴﯿﺎري از ﻗﺎﺑﻠﯿﺖھﺎي دوﺳﺖ داﺷﺘﻨﻲ‪ ، Flickr‬ﺳﺎﯾﺖ ﺑﮫ اﺷﺘﺮاكﮔﺬاري‬ ‫ﻋﻜﺲ ﯾﺎھﻮ، و ﻧﯿﺰ ﻣﻮﺗﻮر ﺟﺴﺘﺠﻮي 9‪ A‬در ﺳﺎﯾﺖ آﻣﺎزون ﺑﺮ اﺳﺎس ايﺟﻜﺲ ﻛﺎر ﻣ ﻲﻛﻨﻨﺪ.‬ ‫ﮔﺮت ﻣﻲﻧﻮﻳﺴﺪ: اﮔﺮ ﻣﻮﺗﻮر ايﺟﻜﺲ ﺑﺮاي ﭘﺎﺳﺦ دادن ﺑﻪ ﻛﺎرﺑﺮ ﻧﯿﺎزﻣﻨﺪ ﮔﺮﻓﺘﻦ اﻃﻼﻋﺎﺗﻲ از ﺳﻤﺖ ﺳﺮور‬ ‫اﺳﺖ، اﮔﺮ ﻗﺮار اﺳﺖ دادهھﺎ ﺑﺮاي ﭘﺮدازش ﺑﻪ ﺳﺮور ارﺳﺎل ﺷﻮﻧﺪ، اﮔﺮ ﻻزم اﺳﺖ ﻛﺪھﺎي اﺿﺎﻓﻲ ﺑﺮاي ﻧﻤﺎﻳﺶ‬ ‫ﺗﻐﯿﯿﺮات اﻳﻨﺘﺮﻓﯿﺲ ﺑﺎرﮔﺬاري ﺷﻮﻧﺪ، اﮔﺮ ﻧﯿﺎز ﺑﻪ ﺑﺎزﻳﺎﺑﻲ و ﺑﯿﺮون ﻛﺸﯿﺪن اﻃﻼﻋﺎت از ﺑﺎﻧﻚ اﻃﻼﻋﺎﺗﻲ ﺑﺎﺷﺪ، ھﻤﻪ‬ ‫اﻳﻦ ﻛﺎرھﺎ ﺑﻪﻃﻮر آﺳﻨﻜﺮون و ﺑﺎ اﺳﺘﻔﺎده از‪ ، XML‬ﺑﺪون اﻳﻨﻜﻪ وﻗﻔﻪاي در ﺗﻤﺎس ﻣﯿﺎن ﻛﺎرﺑﺮ و اﻳﻨﺘﺮﻓﯿﺲ ﻧﺮماﻓﺰار‬ ‫ﺑﻪوﺟﻮد آﻳﺪ ﺗﻮﺳﻂ ﻣﻮﺗﻮر ايﺟﻜﺲ اﻧﺠﺎم ﺧﻮاھﺪ ﺷﺪ.‬ ‫ﺷﻜ ﻞ 1‬ ‫ﺷﻜ ﻞ 2‬ ‫ﺷﻜﻞ ھﺎي 1 و 2 ﺗﺼﺎوﻳﺮي ھﺴﺘﻨﺪ ﻛﻪ ﮔﺮت در ﻣﻘﺎﻟﻪ ﺧﻮد اﺳﺘﻔﺎده ﻛﺮده اﺳﺖ .ﺷﻜﻞ 1 ﻣﻘﺎﻳﺴﻪاي اﺳﺖ ﻛﻪ‬ ‫ﻧﺸﺎن ﻣﻲدھﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪھﺎي ﺗﺤﺖ وب ﺳﻨﺘﻲ ﭼﮕﻮﻧﻪ ﻛﻨﺶھﺎي ﻛﺎرﺑﺮ را ﻣﺪﻳﺮﻳﺖ ﻣﻲﻛﻨﻨﺪ و ايﺟﻜﺲ ﭼﮕﻮﻧﻪ‬ ‫ھﻤﯿﻦ ﻋﻤﻠﯿﺎت را ﻛﻨﺘﺮل ﻣﻲﻛﻨﺪ.‬ ‫ﺷﻜﻞ 2 ﻣﻘﺎﻳﺴ ﻪ دﻳﮕﺮي اﺳﺖ ﻛﻪ ﻧﺸﺎن ﻣﻲدھﺪ اﮔﺮ ﺗﻌﺎﻣﻞ ﻛﺎرﺑﺮ ﺑﺎ ﻳﻚ ﺳﺎﻳﺖ را در ﻣﺤﻮر زﻣﺎن ﺗﺮﺳﯿﻢ ﻛﻨﯿﻢ،‬ ‫ﭼ ﻪ ﺗﻔﺎوﺗﻲ ﻣﯿﺎن ﻓﺮآﻳﻨﺪ ارﺳﺎل و درﻳﺎﻓﺖ داده ھﺎ در ﻧﺮماﻓﺰارھﺎي ﺳﻨﺘﻲ و ﻧﺮماﻓﺰارھﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ﻓﻨﺎوري‬ ‫ايﺟﻜﺲ وﺟﻮد دارد .‬ ‫اﮔﺮ ﺑﻪ ﻧﻤﻮدار ﺷﻜ ﻞ 2 دﻗﺖ ﻛﻨﯿﺪ ﻣﺘﻮﺟ ﻪ ﻣﻲﺷﻮﻳﺪ ﻛ ﻪ ھﻨﮕﺎﻣﻲ ﻛﻪ اﻳﻨﺘﺮﻓﯿﺲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ وب از ايﺟﻜﺲ‬ ‫اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ، ﺗﻤﺎس ﻣﯿﺎن ﻛﺎرﺑﺮ و اﻳﻨﺘﺮﻓﯿﺲ ھﺮﮔﺰ ﻗﻄﻊ ﻧﻤﻲﺷﻮد. او ھﻤﻮاره ﻧﺮماﻓﺰار را در دﺳﺘﺮس و‬ ‫ﭘﯿﺶ روي ﺧﻮد ﻣﻲﺑﯿﻨﺪ و ﻣﻮﺗﻮر ايﺟﻜﺲ در ﭘﺸﺖ ﺻﺤﻨﻪ ﻋﻤﻠﯿﺎت ارﺳﺎل و درﻳﺎﻓﺖ دادهھﺎ را ﻣﺪﻳﺮﻳﺖ ﻣﻲﻛﻨﺪ.‬ ‫ﻣﺰاﯾﺎ و ﻣﻌﺎﯾﺐ ‪Ajax‬‬ ‫ﻃﻲ ﺳﺎلھﺎي اﺧﯿﺮ ﺻﻨﻌﺖ ﻧﺮماﻓﺰار در ﻋﺮﺻﻪ وب ﺑﻪ ﺳﻮي ﺗﻮﻟﯿﺪ ﺳﯿﺴﺘﻢھﺎﻳﻲ ﺣﺮﻛﺖ ﻛﺮدهاﺳﺖ ﻛﻪ ھﺮﭼﻪ‬ ‫ﺑﯿﺸﺘﺮ ﻣﺴﺘﻘﻞ از ﻧﻮع ﺳﯿﺴﺘﻢﻋﺎﻣﻞ و ﻣﺮورﮔﺮي ﺑﺎﺷﺪ ﻛﻪ ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ.‬ ‫ﻧﮕﺎھﻲ ﺑ ﻪ ﺳﯿﺮ ﺗﺤﻮﻻت ﻣﺮﺑﻮط ﺑ ﻪ زﺑﺎن ھﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ وب ﻣﺎﻧﻨ ﺪ ‪ PHP‬و ‪ ASP‬از ﻳﻚﺳﻮ و ﻛﺎھﺶ اﻗﺒﺎ ل‬ ‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﺑ ﻪ ﻓﻨﺎوري ھﺎﻳﻲ ھﻤﭽﻮن ‪ ActiveX‬و ‪ Java Applet‬در ﺳﻤﺖ ﻛﻼﻳﻨﺖ از ﺳﻮي دﻳﮕﺮ، ﻣﻮﻳﺪ اﻳﻦ‬ ‫ﻧﻜﺘﻪ اﺳﺖ .‬ ‫در واﻗﻊ ﻳﻜﻲ از دﻻﻳﻞ ﻣﮫﻢ ﺗﻮﺟﻪ دﻧﯿﺎي ﻧﺮماﻓﺰار ﺑﻪ ﻓﻨﺎوري ايﺟﻜﺲ ھﻤﯿﻦ اﺳﺖ. اﻳﻦ دﺳﺘﺎورد ﺑﺮﺧﻼف‬ ‫ﻓﻨﺎوريھﺎﻳﻲ ﻣﺎﻧﻨﺪ ‪ Macromedia Flash‬ﻧﯿﺎزﻣﻨﺪ ﻧﺼﺐ ھﯿ ﭻ ﻧﺮماﻓﺰار اﻟﺤﺎﻗﻲ و اﺿﺎﻓﻲ روي ﻣﺮورﮔﺮ ﻧﯿﺴﺖ و‬ ‫ھﻤﯿﻦ ﺣﺎﻻ ﺑﺴﺘﺮ ﻻزم ﺑﺮاي ﭘﯿﺎدهﺳﺎزي ايﺟﻜﺲ روي ﻣﯿﻠﯿﻮنھﺎ ﺳﺎﻳﺖ و ﻣﺮورﮔﺮ وب وﺟﻮد دارد. در اﻳﻦ ﻣﯿﺎن،‬ ‫اﺗﻜﺎي ايﺟﻜﺲ ﺑﺮ ﻓﻨﺎوري‪ XML‬از اھﻤﯿﺖ وﻳﮋهاي ﺑﺮﺧﻮردار اﺳﺖ.‬ ‫زﻳﺮا ‪ XML‬ﻣﺎھﯿﺘﺎ ﻳﻚ ﻓﻨﺎوري ﺑﺎز اﺳﺖ ﻛﻪ اﻧﻌﻄﺎفﭘﺬﻳﺮي زﻳﺎدي دارد و ھﻢاﻛﻨﻮن در ﻣﻘﯿﺎس ﮔﺴﺘﺮدهاي در‬ ‫ﻧﺮماﻓﺰارھﺎي ﺗﺤﺖ وب، از ﺳﯿﺴﺘﻢھﺎي ﺗﺠﺎرتاﻟﻜﺘﺮوﻧﯿﻚ ﮔﺮﻓﺘﻪ ﺗﺎ ﻧﺮماﻓﺰارھﺎي ﻣﺪﻳﺮﻳﺖ ﻣﺤﺘﻮاي ﺳﺎﻳﺖھﺎي‬ ‫وب و ﻓﻨﺎوري ھﺎﻳﻲ ھﻤﭽﻮن وبﺳﺮوﻳﺲ، ‪RSS‬و ﺣﺘﻲ ﭘﺎدﻛﺴﺘﯿﻨﮓ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﯿﺮد.‬ ‫ﻇ ﮫﻮر ايﺟﻜﺲ ﻧﺸﺎن ﻣﻲدھﺪ ﻛﻪ ﻓﻨﺎوري ‪ XML‬ھﻨﻮز ﻗﺎﺑﻠﯿﺖھﺎي ﻛﺸﻒﻧﺸﺪهاي دارد ﻛﻪ ھﻤﭽﻨﺎن ﺑﻜﺮ‬ ‫ﻣﺎﻧﺪهاﻧﺪ و ﻣﻲﺗﻮاﻧﻨﺪ ﻣﻨﺸﺎ ﺗﺤﻮﻻت ﺑﺰرگ در ﺳﯿﺴﺘﻢھﺎي اﻃﻼﻋﺎﺗﻲ و ارﺗﺒﺎﻃﻲ ﺑﺎﺷﻨ ﺪ.‬ ‫ﻃﻌﻢ ﻛﺪ ‪ Ajax‬ﭼﮕﻮﻧﮫ اﺳﺖ؟‬ ‫ورود ﺑﮫ ﻣﺒﺎﺣﺚ ﻛﺪﻧﻮﯾﺴ ﻲ ايﺟﻜﺲ ﻣﻘﻮﻟﮫ ﭘﯿﭽﯿﺪه و ﻣﻔﺼﻠ ﻲ اﺳﺖ ﻛﮫ در اﯾﻦ ﻣﻘﺎﻟﮫ ﻧﻤﻲﮔﻨﺠﺪ، وﻟﻲ ﺧﺎﻟﻲ از ﻟﻄﻒ ﻧﯿﺴﺖ ﻛﮫ ﻛﻤﻲ ﺑﺎ ﺷﻜﻞ‬ ‫و ﻗﯿﺎﻓﮫ ﻛﺪھﺎي ايﺟﻜﺲ آﺷﻨﺎ ﺷﻮﯾﺪ. ﻛﺪ زﯾ ﺮ ﻧﻤﻮﻧﮫاي از اﻋﻼن ﺷﻲ ء ‪XMLHttpRequest‬را ﻧﺸﺎن ﻣ ﻲدھﺪ:‬ ‫ﻛﺪ1‬ ‫ﻛﺪ 2 ﻧﻤﻮﻧﮫاي ا ز اﻋﻼن ﺷﻲء ‪ XMLHttpRequest‬را در ﻣﺮورﮔﺮھﺎي ﻣﺎﯾﻜﺮوﺳﺎﻓﺘﻲ ﻧﺸﺎن ﻣﻲدھﺪ :‬ ‫ﻛﺪ 2‬ ‫ﻛﺪ 3 ﻧﻤﻮﻧﮫاي از ﻛﺪﻧﻮﯾﺴﻲ ﺟﺎوا اﺳﻜﺮﯾﭙﺖ را ﻧﺸﺎن ﻣ ﻲدھﺪ. د ر ايﺟﻜﺲ ﺑﮫ وﻓﻮر از ﻣﺘﺪوﻟﻮژي ‪ DOM‬در ﺟﺎوا اﺳﻜﺮﯾﭙﺖ و‬ ‫‪DHTML‬اﺳﺘﻔﺎده ﻣ ﻲﻛﻨﯿﻢ :‬ ‫ﻛﺪ 3‬ ‫ﻛﺪ 4 ﻧﯿ ﻧﻤﻮﻧﮫاي ا ز روش ارﺳﺎ ل ﯾﻚ ﺗﻘﺎﺿﺎ ﺑﮫ وﺳﯿﻠﮫ ‪ Ajax‬را ﻧﺸﺎن ﻣﻲدھﺪ :‬ ‫اﯾﻦ ﺗﻘﺎﺿﺎ ﻣﻲﺗﻮاﻧﺪ ﻣﺜﻼ از ﻗﺴﻤﺘﻲ از ﯾﻚ ﺻﻔﺤﮫ و ب ﺑﮫ ﺻﻮر ت ﻛﺪ 5 ﺑﺎﺷﺪ :‬ ‫ﻛﺪ5‬ ‫ﻧﮭﺎﯾﺘﺎ ﭘﺎﺳﺦ درﯾﺎﻓﺖ ﺷﺪه از ﺳﻤﺖ ﺳﺮور را ﻧﯿﺰ ﻣﻲﺗﻮان ﺑﮫ وﺳﯿﻠﮫ ﻛﺪي ﺷﺒﯿﮫ ﺑﮫ ﻛﺪ 6 ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮا ر داد :‬ ‫ﻛﺪ 6‬ ‫در ھﻤﯿﻦ ارﺗﺒﺎط، روﻳﻜﺮد ايﺟﻜﺲ ﺑﻪ ﺳﻤﺖ ﻓﻨﺎوري وبﺳﺮوﻳﺲ ﻗﺎﺑﻞ ﺗﻮﺟﻪ اﺳﺖ. از آﻧﺠﺎ ﻛﻪ ‪ Ajax‬ﺗﺎ ﺣﺪ‬ ‫زﻳﺎدي ﺑﻪ ﻣﻌﻤﺎري ‪ XMLHttpRequest‬واﺑﺴﺘﻪ اﺳﺖ، اﻳﻦ ﻗﺎﺑﻠﯿﺖ را دارد ﻛ ﻪ ﻓﺮاﻣﯿﻦ ارﺳﺎل و درﻳﺎﻓﺖ اﻃﻼﻋﺎت‬ ‫را ﻧﻪ ﻓﻘﻂ از ﻃﺮﻳﻖ ﺳﺎﻳﺖ اﺻﻠﻲ ﻧﻤﺎﻳﺶ دھﻨﺪه ﻳﻚ ﺻﻔﺤ ﻪ وب، ﺑﻠﻜﻪ از ﻃﺮﻳﻖ ﺳﺎﻳﺖ ھﺎي دﻳﮕﺮي ﻛ ﻪ اﺣﺘﻤﺎﻻ‬ ‫اﻃﻼﻋﺎت ﺧﻮد را ﺑﺮ ﺑﺴﺘﺮ وب ﺳﺮوﻳﺲ و ‪ XML‬ﻗﺮار دادهاﻧﺪ ﻧﯿﺰ درﻳﺎﻓﺖ ﻛﻨﺪ. ﺑﻨﺎﺑﺮاﻳﻦ ايﺟﻜﺲ ﺑﺎﻟﻘﻮه ﻳﻚ ﻓﻨﺎوري‬ ‫ﺳﺎزﮔﺎر ﺑﺎ وب ﺳﺮوﻳﺲ ﻧﯿﺰ ھﺴﺘﺪ.‬ ‫ﻣﺰﻳﺖ ﻣﮫﻢ دﻳﮕﺮ ‪ A jax‬ﺑﮫﺮه ﮔﯿﺮي آن از اﺳﺘﺎﻧﺪارد ‪ CSS‬اﺳﺖ.‬ ‫اﺳﺘﺎﻧﺪاردي ﻛﻪ ﺑﻪ ﺗﻨﮫﺎﻳﻲ ﻣﻨﺸﺎ ﺗﺤﻮﻻت دﻳﮕﺮي در زﻣﯿﻨﻪ اﻳﻨﺘﺮﻓﯿﺲ ﻧﺮماﻓﺰارھﺎي وب اﺳﺖ و در آﻳﻨﺪه ﺑﺴﯿﺎر‬ ‫ﻧﺰدﻳﻚ ﺑﻪ وﺟﻪ ﻏﺎﻟﺐ ﺻﻔﺤﻪآراﻳﻲ و اﻳﻨﺘﺮﻓﯿﺲ ﺳﺎﻳﺖ ھﺎي وب ﺗﺒﺪﻳﻞ ﺧﻮاھﺪ ﺷﺪ. ﺗﻮﺟﻪ ايﺟﻜﺲ ﺑﻪ ‪ CSS‬ﺷﺎن‬ ‫ﻣﻲدھﺪ ﻛﻪ اﻳﻦ ﻓﻨﺎوري ھﻤﺰﻣﺎن ﺑﺎ ﺑﻪﻛﺎرﮔﯿﺮي ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ‪ XML‬ﺑﺮاي ﻣﺪﻳﺮﻳﺖ دادهھﺎ، از اﺳﺘﺎﻧﺪارد‬ ‫ﭘﯿﺸﺮﻓﺘﻪاي ﺑﺮاي اﻳﻨﺘﺮﻓﯿﺲ وب اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ و ﻣﻲﺗﻮان ﺣﻘﯿﻘﺘﺎ آن را ﻳﻚ ﻓﻨﺎوري ﻣﺮﺗﺒﻂ ﺑﺎ اﻳﻨﺘﺮﻓﯿﺲ ) و ﻧﻪ‬ ‫ﻓﻘﻂ ﺗﻌﺎﻣﻞ ﻣﯿﺎن ﻛﻼﻳﻨﺖ و ﺳﺮور( ﺗﻠﻘﻲ ﻛﺮد.‬ ‫ﺑﺎ اﻳﻦ وﺟﻮد، ايﺟﻜﺲ ﻣﻌﺎﻳﺒﻲ ﻧﯿﺰ دارد و اﻳﻦ ﻣﻌﺎﻳﺐ ﻣﻮﺿﻮع ﺑﺤﺚ ﺑﺴﯿﺎري در ﻣﺤﺎﻓﻞ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ رو ي‬ ‫اﻳﻨﺘﺮﻧﺖ اﺳﺖ. ﻳﻜﻲ از ﻣﺴﺎﺋﻠﻲ ﻛ ﻪ ﺑﻪ ﻋﻨﻮان اﻳﺮاد ﻣﻄﺮح ﺷﺪه، دﺷﻮاري ﺗﻐﯿﯿﺮ ﻋﺎدت ﻛﺎرﺑﺮان در اﺳﺘﻔﺎده از‬ ‫ﻛﻠﯿﺪھﺎي ‪ Back‬و ‪Forward‬و ‪ Refresh‬در ﻣﺮورﮔﺮھﺎي وب اﺳﺖ. ﻳﻜﻲ از ﻣﺸﻜﻼت ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن وب ھﻤﻮاره‬ ‫اﻳﻦ اﺳﺖ ﻛﻪ ﻳﺎ ﺑﺎﻳﺪ ﻛﺎرﺑﺮ را ﻋﺎدت دھﻨﺪ ﻛﻪ ھﺮﭼﻪ ﻛﻤﺘﺮ از اﻳﻦ دﻛﻤﻪ ھﺎ اﺳﺘﻔﺎده ﻛﻨﺪ و ﻳﺎ ﻧﺮماﻓﺰار ﺧﻮد را‬ ‫ﻃﻮري ﺑﻨﻮﻳﺴﻨﺪ ﻛ ﻪ اﮔﺮ ﻛﺎرﺑﺮ ﺳﮫﻮا ﻳﺎ ﻋﻤﺪا از اﻳﻦ دﻛﻤﻪھﺎ اﺳﺘﻔﺎده ﻛﺮد، ﻧﺮماﻓﺰار دﭼﺎر اﺷﺘﺒﺎه و ﺧﻄﺎ در‬ ‫ﺗﻔﺴﯿﺮ ﻋﻤ ﻞ ﻛﺎرﺑﺮ ﻧﺸﻮد.‬ ‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎ ل ھﻨﻮز ﺑﺴﯿﺎري از ﺳﺎﻳﺖ ھﺎي ﺗﺠﺎرت اﻟﻜﺘﺮوﻧﯿﻜﻲ ﻛﻪ ﺑﻪ ﻛﺎر ﻓﺮوش ﻣﺤﺼﻮﻻت ﻣﺸﻐﻮﻟﻨﺪ ھﻨﮕﺎم‬ ‫ﻃﻲ ﺷﺪن ﻣﺮاﺣﻞ ﻧﮫﺎﻳﻲ ﺮﻳﺪ آﻧﻼﻳﻦ ﺑﻪ ﻛﺎرﺑﺮ ھﺸﺪار ﻣﻲدھﻨﺪ ﻛ ﻪ ﺣﯿﻦ ﭘﺮدازش ﻳﻚ ﺳﻔﺎرش )ﻳﻌﻨﻲ درﺳﺖ‬ ‫در ﻟﺤﻈﻪاي ﻛﻪ ﻓﺮﻣﺎن ﻧﮫﺎﻳﻲ از ﺳﻮي ﻛﺎرﺑﺮ ارﺳﺎل ﺷﺪه اﺳﺖ و ھﻨﻮز ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﭘﯿﻐﺎم ﺛﺒﺖ ﻣﻮﻓﻘﯿﺖآﻣﯿﺰ‬ ‫ﺳﻔﺎرش ﻳﺎ ﻋﺪم ﺛﺒﺖ آن ﺑﺮاي وي ﻧﻤﺎﻳﺶ داده ﻧﺸﺪه( از ﻓﺸﺮدن ﻛﻠﯿﺪ ‪ Refresh‬ﺟﺪا ﭘﺮھﯿﺰ ﻛﻨﻨﺪ وﮔﺮﻧ ﻪ ﻣﻤﻜﻦ‬ ‫اﺳﺖ از ﻛﺎرت اﻋﺘﺒﺎر آﻧﮫﺎ دوﺑﺎر ﭘﻮل ﻛﺴﺮ ﺷﻮد. ھﻤﭽﻨﯿﻦ اﺳﺘﻔﺎده از دﻛﻤﻪھﺎي ‪ Back‬و ‪ Forward‬در ﻋﻤﻠﯿﺎﺗﻲ‬ ‫ﻛ ﻪ ﺑﻪ آﺳﺎﻧﻲ ﺑﺮﮔﺸﺖﭘﺬﻳﺮ ﻧﯿﺴﺘﻨﺪ ﻣﻤﻜﻦ اﺳﺖ ﺑﺎﻋﺚ ﮔﯿﺞ ﺷﺪن ﻛﺎرﺑﺮ اﺳﺖ.‬ ‫ﻣﺜﻼ اﮔﺮ ﻧﺎﻣﻪ ھﺎي داﺧ ﻞ ﺻﻨﺪوق ﭘﺴﺘﻲ ﺧﻮد را ﭘﺎك ﻛﻨﯿﺪ، اﺳﺘﻔﺎده از دﻛﻤﻪ ‪ Back‬ھﺮﮔﺰ اﻳﻦ ﻋﻤﻞ را ‪Undo‬‬ ‫ﻧﻤﻲﻛﻨﺪ. ھﻤﭽﻨﯿﻦ اﮔﺮ ﻳﻚ ﻗﻠﻢ ﻛﺎﻻ ﺑ ﻪ ﺳﺒﺪ ﺧﺮﻳﺪ آﻧﻼﻳﻦ ﺧﻮد اﺿﺎﻓ ﻪ ﻛﻨﯿﺪ، ﻓﺸﺮدن دﻛﻤﻪ ‪Back‬ﻣﻤﻜﻦ اﺳﺖ در‬ ‫ﻇﺎھﺮ ﭼﻨﯿﻦ ﻧﺸﺎن دھﺪ ﻛﻪ آن ﻗﻠﻢ ﻛﺎﻻ ﻣﺠﺪدا از ﺳﺒﺪ ﺑﺮداﺷﺘ ﻪ ﺷﺪه اﻣﺎ در ﺳﻤﺖ ﺳﺮور ھﻤﭽﻨﺎن در ﺳﺒﺪ‬ ‫ﺧﺮﻳﺪ ﻛﺎرﺑﺮ ﺑﺎﺷﺪ. از آﻧﺠﺎ ﻛﻪ ﻓﻨﺎوري ايﺟﻜﺲ ﻋﻤﻞ ‪ Navigation‬ﻳﺎ راھﺒﺮي در ﻳﻚ ﺳﺎﻳﺖ را ﺑﻪ روﻧﺪي‬ ‫ﻏﯿﺮﺧﻄﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ، ﺗﻤﺎم اﻳﻦ ﻣﺸﻜﻼت ﺑﻪ ﺷﻜﻞ ﺣﺎدﺗﺮي ﻣﻤﻜﻦ اﺳﺖ ﺑﺮوز ﻛﻨﺪ .‬ ‫در واﻗﻊ ﺑﺎ ﺣﻀﻮر‪ ، Ajax‬ﻛﺎرﻛﺮد ﺳﯿﺴﺘﻢ ‪ History‬ﻣﺮورﮔﺮ ﺑ ﻪ ﻣﺴﺎﻟﻪاي ﺑﻐﺮﻧﺞ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮد. زﻳﺮا ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ‬ ‫ﻳﺎ ﺑﺎﻳﺪ ﺑﺎ ﮔﻨﺠﺎﻧﺪن دﻛﻤﻪھﺎ و ﻓﺮاﻣﯿﻦ اﺿﺎﻓﻲ، ﻣﻜﺎﻧﯿﺰم ‪ Undo‬را ﺑﺎزﺳﺎزي ﻛﻨﺪ و ﻳﺎ ﻣﻮﺗﻮر ايﺟﻜﺲ را ﻃﻮري‬ ‫ﺑﻨﻮﻳﺴﺪ ﻛﻪ ﻓﺸﺮدن دﻛﻤﻪ ‪ Back‬ﺧﻮد ﺑ ﻪ ﺧﻮد ﻣﻮﺟﺐ اﺣﻈﺎر ﻓﺮﻣﺎن ‪ Undo‬ﺷﻮد .‬ ‫در ھﺮ دو ﺻﻮرت ﻛﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ آﺳﺎن ﻧﺨﻮاھﺪ ﺑﻮد. اﻟﺒﺘﻪ در اﻳﻦ زﻣﯿﻨ ﻪ ﺗﺮﻓﻨﺪھﺎ و ﺗﻜﻨﯿﻚھﺎﻳﻲ ھﻢ اﺑﺪاع ﺷﺪه‬ ‫اﺳﺖ. از ﺟﻤﻠﻪ، اﺳﺘﻔﺎده از ﺗﮓ ‪ IFRAME‬ﻣﺨﻔﻲ در اﻳﻨﺘﺮﻓﯿﺲ ﺻﻔﺤﻪ ﻛﻪ ﻣﻮﺗﻮر ايﺟﻜﺲ ﺑﺘﻮاﻧﺪ در ﺻﻮرت‬ ‫ﻓﺸﺮده ﺷﺪن دﻛﻤﻪ ‪Back‬از ﺳﻮي ﻛﺎرﺑﺮ، ﻧﺴﺨﻪھﺎي ﭘﯿﺸﯿﻦ ﻧﻤﺎﻳﺶ داده ﺷﺪه از اﻳﻨﺘﺮﻓﯿﺲ را از اﻧﺒﺎره‬ ‫‪History‬ﻣﺮورﮔﺮ ﺑﯿﺮون ﺑﻜﺸﺪ و دوﺑﺎره در ﭼﺮﺧ ﻪ ﻋﻤﻠﯿﺎت ﻣﻮﺗﻮر ايﺟﻜﺲ وارد ﻛﻨﺪ. اﻳﻦ ﺗﺮﻓﻨﺪ ھﻢاﻛﻨﻮن در‬ ‫ﺳﺮوﻳﺲ ‪ Google Maps‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد.‬ ‫ﻣﺸﻜﻞ دﻳﮕﺮي ﻛﻪ در راﺑﻄﻪ ﺑﺎ ايﺟﻜﺲ وﺟﻮد دارد، ﺑﻲ ﻣﻌﻨﻲ ﺷﺪن ﻣﻔﮫﻮم ‪ Bookmark‬اﺳﺖ.‬ ‫ﺑﺎزھﻢ ﻣﻜﺎﻧﯿﺰم ﻏﯿﺮﺧﻄﻲ ايﺟﻜﺲ ﻣﺸﻜﻞ ﺳﺎز ﻣﻲﺷﻮد. آﻳﺎ ﺷﻤﺎ ﻣﻲﺗﻮاﻧﯿﺪ در ﻧﺮماﻓﺰارھﺎي ﻣﻌﻤﻮﻟﻲ‬ ‫دﺳﻜﺘﺎپ ﻳﻚ ﻟﺤﻈ ﻪ ﻣﺸﺨﺺ را ‪ Bookmark‬ﻛﻨﯿﺪ و دوﺑﺎره ﺑﻪ آن ﺑﺮﮔﺮدﻳﺪ؟ ﺑﻌﻀﻲ از ﻧﺮماﻓﺰارھﺎ ﻣﺎﻧﻨﺪ ﻓﺘﻮﺷﺎپ‬ ‫(ﺳﯿﺴﺘﻢ )‪ Action history‬اﻳﻦﻛﺎر را اﻧﺠﺎم ﻣﻲدھﻨﺪ، وﻟﻲ اﻏﻠﺐ ﻧﺮماﻓﺰارھﺎ ﭼﻨﯿﻦ ﻧﯿﺴﺘﻨﺪ. در واﻗﻊ ﺑﻪ ﺳﺨﺘﻲ‬ ‫ﻣﻲﺗﻮان از ﻟﺤﻈﺎت ﻣﺨﺘﻠﻒ ﻳﻚ ﻧﺮماﻓﺰار ﻋﻜﺲ ﮔﺮﻓﺖ و ‪ snapshot‬ﺗﮫﯿ ﻪ ﻛﺮد.‬ ‫اﻳﻦﻛﺎر ﺑﻪ ﻳﻚ اﻧﺒﺎره ﭘﯿﭽﯿﺪه ﻧﯿﺎز دارد ﻛﻪ ھﻢ ﺣﺎﻟﺖھﺎ ي ﻣﺨﺘﻠﻒ اﻳﻨﺘﺮﻓﯿﺲ و ھﻢ وﺿﻌﯿﺖ ھﺎي ﻣﺘﻔﺎوت دادهھﺎ را‬ ‫ﻗﺒﻞ و ﭘﺲ از ﺗﻐﯿﯿﺮات در ﺧﻮد ﻧﮕ ﻪ دارد. اﻟﺒﺘ ﻪ درﻣﻮرد ‪ Ajax‬راھﻜﺎرھﺎﻳﻲ در اﻳﻦ زﻣﯿﻨﻪ ﭘﯿﺸﻨﮫﺎد ﺷﺪه اﺳﺖ. از‬ ‫ﺟﻤﻠ ﻪ اﺳﺘﻔﺎده از ‪ a nchor‬در ‪ HTML‬ﻛﻪ ﭘﺲ از ﻋﻼﻣﺖ َ در ﻳﻚ ‪ URL‬ﻇﺎھﺮ ﻣﻲﺷﻮد. از آﻧﺠﺎﻳﻲ ﻛ ﻪ ﺟﺎوا‬ ‫اﺳﻜﺮﻳﭙﺖ اﻣﻜﺎن ﺑ ﻪ روزرﺳﺎﻧﻲ داﻳﻨﺎﻣﯿﻚ آﻧﻜﻮرھﺎ را دارد، ﺑﻌﻀﻲ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﭘﯿﺸﻨﮫﺎد ﻛﺮدهاﻧﺪ ﻛﻪ از اﻳﻦ‬ ‫ﺗﺮﻓﻨﺪ ﺑﺮاي ﻧﮕﮫﺪاري ﺣﺎﻻت ﻣﺨﺘﻠﻒ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ اﺳﺘﻔﺎده ﺷﻮد. ﺗﻜﻨﯿﻜﻲ ﻛ ﻪ ﻣﻤﻜﻦ اﺳﺖ در‬ ‫زﻣﯿﻨ ﻪ ﺣﻞ ﻣﺸﻜﻞ دﻛﻤﻪ ھﺎي ‪ Back‬و ‪ Forward‬ﻧﯿﺰ ﺳﻮدﻣﻨﺪ واﻗﻊ ﺷﻮد.‬ ‫ﻳﻚ ﻣﺸﻜﻞ ﻋﻤﺪه دﻳﮕﺮ ﻧﯿﺰ در ارﺗﺒﺎ ط ﺑﺎ ايﺟﻜﺲ وﺟﻮد دارد. اﻳﻦ ﻓﻨﺎوري ﺑﻪ ﺷﺪت ﻣﺘﻜﻲ ﺑﻪ ‪XMLHttpRequest‬‬ ‫اﺳﺖ و اﻳﻦ ﺷﻲء ﺑ ﻪ دﻻﻳﻞ اﻣﻨﯿﺘﻲ ﻃﻲ ﻣﺎهھﺎي اﺧﯿﺮ ھﺮﭼﻪ ﺑﯿﺸﺘﺮ و ﺑﯿﺸﺘﺮ در ﻧﺴﺨﻪھﺎي ﺟﺪﻳﺪ ﻣﺮورﮔﺮھﺎ‬ ‫ﻣﺤﺪود ﺷﺪه اﺳﺖ. زﻳﺮا اﮔﺮ ھﺮ ﻛﻼﻳﻨﺘﻲ ﺑﺘﻮاﻧﺪ از ھﺮ ﻧﻘﻄﻪاي ﺑﻪ ھﺮ ﺳﺮوري اﻳﻦ ﻓﺮﻣﺎن را ﺑﻔﺮﺳﺘﺪ، آﻧﮕﺎه‬ ‫ﺗﮫﺪﻳﺪھﺎي اﻣﻨﯿﺘﻲ ﻋﻠﯿ ﻪ ﺳﺎﻳﺖھﺎ اﻓﺰاﻳﺶ ﻣﻲﻳﺎﺑﺪ. ﻣﺤﺪودﻳﺖ ھﺎي ﺟﺪﻳﺪ اﻋﻤﺎلﺷﺪه در ﻧﺴﺨﻪھﺎي اﺧﯿﺮ‬ ‫ﻣﺮورﮔﺮھﺎ ﻣﻮﺟﺐ ﺷﺪه ﻛ ﻪ ﻓﺮﻣﺎن ‪XMLHttpRequest‬ﺑﻪﻏﯿﺮ از ﺳﺎﻳﺘﻲ ﻛ ﻪ ﺻﻔﺤ ﻪ وب از آﻧﺠﺎ آﻣﺪه اﺳﺖ ﻧﺘﻮاﻧﺪ‬ ‫ﺑﺎ ﺳﺎﻳﺖ دﻳﮕﺮي دﻳﺎﻟﻮگ داﺷﺘﻪ ﺑﺎﺷﺪ و اﻳﻦ ﻣﺴﺌﻠ ﻪ در ﺗﻨﺎﻗﺾ ﺑﺎ ﻛﺎرﺑﺮد ايﺟﻜﺲ در زﻣﯿﻨﻪ وبﺳﺮوﻳﺲ اﺳﺖ.‬ ‫اﻟﺒﺘﻪ ﺑﺮاي ﻏﻠﺒﻪ ﺑﺮ اﻳﻦ ﻣﺸﻜﻞ راهﺣﻞھﺎﻳﻲ ھﻢ ﭘﯿﺸﻨﮫﺎد ﺷﺪه اﺳﺖ، از ﺟﻤﻠ ﻪ اﻳﻦﻛﻪ ﺷﻲ‬ ‫ء ‪XMLHttpRequest‬ﻣﻲﺗﻮاﻧﺪ ﺗﻘﺎﺿﺎي دﻳﺎﻟﻮگ ﺑﺎ ﺳﺎﻳﺖ ھﺎي دﻳﮕﺮ را ﺑ ﻪ ﻳﻚ وب ﺳﺮوﻳﺲ روي ﺳﺎﻳﺘﻲ ﻛﻪ‬ ‫ﺻﻔﺤﻪ وب از آﻧﺠﺎ آﻣﺪه اﺳﺖ ﺑﻔﺮﺳﺘﺪ و اﻳﻦ وبﺳﺮوﻳﺲ )ﻛ ﻪ روي ﻣﯿﺰﺑﺎن ﺳﺎﻳﺖ ﻗﺮار دارد و ﺑﺎ ﺗﻤﺎم اﻳﻨﺘﺮﻧﺖ در‬ ‫ارﺗﺒﺎ ط اﺳﺖ( ﺑﻪ ﺻﻮرت ﻳﻚ واﺳﻄﻪ ﻋﻤﻞ ﻛﻨﺪ و ﺗﻘﺎﺿﺎھﺎي ﻣﻮرد ﻧﻈﺮ را ﺑﺮاي ﺳﺎﻳﺖ ﻣﻘﺼﺪ ارﺳﺎل ﻛﻨﺪ. اﻳﻦ وب‬ ‫ﺳﺮوﻳﺲھﺎي واﺳﻄ ﻪ اﺻﻄﻼﺣﺎ ‪ Application Proxy‬ﻧﺎﻣﯿﺪه ﻣﻲﺷﻮﻧﺪ.‬ ‫اﻟﺒﺘﻪ ايﺟﻜﺲ ﻣﺸﻜﻼت ﻛﻮﭼﻚ و ﺟﻨﺒﻲ دﻳﮕﺮي ھﻢ دارد ﻛﻪ ﭼﻨﺪان ﻣﺎﻳﻪ ﻧﺮاﻧﻲ ﻧﯿﺴﺖ وﻟﻲ ﺑﻪ ھﺮﺣﺎل ﻗﺎﺑﻞ‬ ‫ﻟﻤﺲ ھﺴﺘﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ، ﻧﺮماﻓﺰارھﺎ ي ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ از ﺣﺠﻢ زﻳﺎدي ﺟﺎوا اﺳﻜﺮﻳﭙﺖ اﺳﺘﻔﺎده‬ ‫ﻣﻲ ﻛﻨﻨﺪ ﻛﻪ ھﻤﻪ اﻳﻨﮫﺎ در ھﺮ ‪ session‬دﺳﺖ ﻛﻢ ﻳﻚﺑﺎر ﺑﺎﻳﺪ روي ﻣﺮورﮔﺮ ﺑﺎرﮔﺬاري ﺷﻮﻧﺪ. ﺑﻨﺎﺑﺮاﻳﻦ اوﻟﯿﻦ ﺑﺎري‬ ‫ﻛ ﻪ ﭼﻨﯿﻦ اﻳﻨﺘﺮﻓﯿﺴﻲ ﺑﺎرﮔﺬاري ﻣﻲﺷﻮد ﺻﻔﺤﻪ وب آنﻗﺪر ﺳﻨﮕﯿﻦ ﻣﻲﺷﻮد ﻛ ﻪ ﺣﺘﻲ ﺑﺎ ارﺗﺒﺎط ﺑﺎﻧﺪﭘﮫﻦ ھﻢ‬ ‫ﭼﻨﺪ ﻟﺤﻈﻪ ﻃﻮل ﻣﻲ ﻛﺸﺪ ﻛﻪ ﺻﻔﺤﻪ ﺑﺎرﮔﺬاري ﺷﻮد.‬ ‫در ﭼﻨﯿﻦ ﺷﺮاﻳﻄﻲ ﻧﻮﺷﺘﻦ ﻳﻚ ﻣﻮﺗﻮر ايﺟﻜﺲ ھﻮﺷﻤﻨﺪ ﻛﻪ ﺑﺎ ﻛﻤﺘﺮ ﻣﯿﺰان ﻛﺪ ﺑﺘﻮاﻧﺪ ﺑﮫﺘﺮﻳﻦ ﻛﺎرﻛﺮد را داﺷﺘﻪ‬ ‫ﺑﺎﺷﺪ، ﺧﻮد ﺑ ﻪ ﻳﻚ ﭼﺎﻟﺶ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮد؛ ﺿﻤﻦ اﻳﻦﻛ ﻪ ﻛﺎرﺑﺮان وب در ﻛﺸﻮرھﺎﻳﻲ ﻛﻪ ﺳﺮﻋﺖ‬ ‫دﺳﺘﺮﺳﻲ ﺑﻪ اﻳﻨﺘﺮﻧﺖ در آﻧﮫﺎ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮ ل زﻳﺎد ﻧﯿﺴﺖ ﺑﺎﻳﺪ ھﻨﮕﺎم ﺑﺎرﮔﺬاري ﺻﻔﺤﺎت وب اﻳﻦﭼﻨﯿﻨﻲ ﺻﺒﺮ‬ ‫ﭘﯿﺸﻪ ﻛﻨﻨﺪ و ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﻧﯿﺰ ﻣﺮاﻗﺐ ﺑﺎﺷﻨﺪ ﺗﺎ در ﺻﻮرﺗﻲ ﻛﻪ ﺑ ﻪ دﻟﯿﻞ ﻛﻨﺪي ﺧﻂ ﻳﺎ ﻗﻄﻊ ﺷﺪنھﺎ ﻟﺤﻈﻪاي‬ ‫آن، ﻛﺪھﺎي ﺟﺎوا اﺳﻜﺮﻳﭙﺖ ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ روي ﻣﺮورﮔﺮ ﺑﺎرﮔﺬاري ﻧﺸﺪ، ﻧﺮماﻓﺰار دﭼﺎر ﺧﻄﺎ و اﺷﺘﺒﺎه ﻧﺸﻮد و‬ ‫ﺑﺘﻮاﻧﺪ اﻳﻦ ﻣﺸﻜﻼت را از ﻃﺮﻳﻖ ﺑﺎرﮔﺬاري ﻣﺠﺪد و ھﻮﺷﻤﻨﺪاﻧﻪ ﻛﺪ ﺟﺎوا اﺳﻜﺮﻳﭙﺖ روي ﻛﻼﻳﻨﺖ، ﻣﺪﻳﺮﻳﺖ ﻛﻨﺪ .‬ ‫ﺟﻨﺒﺶ ‪ Open Ajax‬ھﻢ از راه رﺳﯿﺪ‬ ‫در ﻛﻨﺎر ھﻤﮫ ﺗﺤﻮﻻﺗﻲ ﻛﮫ ﺑﮫ دﻧﺒﺎل ﻇﮭﻮر ﭘﺪﯾﺪه ايﺟﻜﺲ در ﺻﻨﻌ ﺖ ﻧﺮماﻓﺰار ﭘﺪﯾﺪ آﻣﺪه اﺳﺖ، ﯾﻚ ﺧﺒﺮ ﻣﮭﻢ ﻧﯿﺰ ﻗﺎﺑﻞ ﺗﻮﺟﮫ اﺳﺖ. ﺷﺮﻛﺖ‬ ‫‪IBM‬ﻛﮫ ﺧﻮد از ﭘﯿﺸﮕﺎﻣﺎن ﻓﻨﺎوري ‪ XML‬اﺳﺖ، در اﺑﺘﺪاي ﻣﺎه ﻓﻮرﯾﮫ 6002 اﻋﻼم ﻛﺮد ﯾﻚ اﺋﺘﻼف ﺑﺰرگ ﺻﻨﻌﺘﻲ ﻣﺘﺸﻜ ﻞ از‬ ‫ﺷﺮﻛﺖھﺎي ﺑﻮرﻟﻨﺪ، ‪ ،Zend،BEA Systems‬ﻧﺎول، ﯾﺎھﻮ، ﻣﻮزﯾﻼ، ردھﺖ، اوراﻛﻞ و ﺑﻨﯿﺎد اﻛﻠﯿﭙﺲ اﯾﺠﺎد ﻛﺮده اﺳ ﺖ ﻛﮫ در ﻧﻈﺮ‬ ‫دارد ﺑﺮاي ﺗﻮﺳﻌﮫ ﯾﻚ ﭘﯿﺎدهﺳﺎزي ﻓﺮاﮔﯿﺮ و اﭘﻦ ﺳﻮرس از ايﺟﻜﺲ ﺗﻼش ﻛﻨﺪ. ﭘﯿﺶ ﺑﯿﻨ ﻲ ﻣﻲﺷﻮد ﻛﮫ اﯾﻦ ﭘﯿﺎدهﺳﺎزي ﺑﮫ ﯾﻜﻲ از‬ ‫اﺳﺘﺎﻧﺪاردھﺎي اﺻﻠﻲ ايﺟﻜﺲ در ﺻﻨﻌﺖ ﻧﺮماﻓﺰار ﺗﺒﺪﯾ ﻞ ﺷﻮد. آيﺑﻲام در ﻧﻈﺮ دارد ﻣﺠﻤﻮﻋﮫ ‪ Toolkit‬ﭘﯿﺸﻨﮭﺎدي ﺧﻮد را از ﻃﺮﯾﻖ‬ ‫ﺑﻨﯿﺎدھﺎي ﻣﻮزﯾﻼ و اﻛﻠﯿﭙﺲ در دﺳﺘﺮس ﺟﺎﻣﻌﮫ اﭘﻦ ﺳﻮرس ﻗﺮاردھﺪ. در ھﻤﯿﻦ راﺑﻄﮫ ﺷﺮﻛﺖ‪ ، Zimbra‬ﯾﻚ ﺳﺎزﻧﺪه ﻧﺮماﻓﺰارھﺎي ﻣﺒﺘﻨﻲ‬ ‫ﺑﺮ ايﺟﻜﺲ درﻧﻈﺮدارد ﻣﺠﻤﻮﻋﮫ ‪ T oolkit‬ﺧﻮد را ﺗﺤﺖ ﻟﯿﺴﺎﻧﺲ ﻣﻮزﯾﻼ و ‪ Apache‬در اﺧﺘﯿﺎر ﺑﺮﻧﺎﻣﮫﻧﻮﯾﺴﺎن ﻗﺮار دھﺪ.‬ ‫در ﻋﯿﻦ ﺣﺎ ل وﻗﺘﻲ ﺣﺠﻢ ﺟﺎوا اﺳﻜﺮﻳﭙﺖ ﺑﺎرﮔﺬاري ﺷﺪه روي ﻛﻼﻳﻨﺖ اﻓﺰاﻳﺶ ﻣﻲﻳﺎﺑﺪ ﺳﺮﻋﺖ ﭘﺮدازش‬ ‫ﻛﺎﻣﭙﯿﻮﺗﺮي ﻛﻪ ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ ﻧﯿﺰ ﺑﻪ ﻳﻚ ﻣﺴﺌﻠﻪ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮد. ﺑ ﻪ ﺑﯿﺎن دﻳﮕﺮ، ايﺟﻜﺲ ﺷﺪﻳﺪا ﻣﻨﺎﺑﻊ‬ ‫و ‪ resource‬ھﺎي ﺳﯿﺴﺘﻢ را ﺑﻪ ﻛﺎرﻣﻲ ﮔﯿﺮد، ﭼﻨﺎﻧﻜﻪ ﺑﻪ ﺟﺮات ﻣﻲﺗﻮان ﮔﻔﺖ ﻧﺮماﻓﺰارھﺎي ﻣﺒﺘﻨﻲﺑﺮ ‪ Ajax‬ﺑﺮاي‬ ‫ﻛﺎرﺑﺮاﻧﻲ ﻛ ﻪ از ﻛﺎﻣﭙﯿﻮﺗﺮھﺎي ﺿﻌﯿﻒ و ﻗﺪﻳﻤﻲ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻧﯿﺴﺖ.‬ ‫اﮔﺮ ﻓﺮض را ﺑﺮ اﻳﻦ ﺑﮕﺬارﻳﻢ ﻛﻪ اﻳﻦ ﻳﻚ ﻣﺸﻜﻞ ﻋﻤﻮﻣﻲ اﺳﺖ و ﻧ ﻪ ﻣﺨﺘﺺ وب، ﻳﻌﻨﻲ ﻛﺎﻣﭙﯿﻮﺗﺮھﺎي ﻗﺪﻳﻤﻲ از‬ ‫اﺟﺮاي ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﻧﺮماﻓﺰارھﺎي ﻣﺨﺼﻮص دﺳﻜﺘﺎپ ﻧﯿﺰ ﻧﺎﺗﻮاﻧﻨﺪ ﺗﺎ ﭼ ﻪ ﺑﺮﺳﺪ ﺑ ﻪ وب، آﻧﮕﺎه اﻳﻦ ﻣﺸﻜﻞ ﭼﻨﺪان‬ ‫اھﻤﯿﺘﻲ ﻧﺪارد زﻳﺮا ﺑﻪ ﻣﺮور زﻣﺎن، ﺑﺎ ﺟﺎﻳﮕﺰﻳﻦ ﺷﺪن ﺳﯿﺴﺘﻢھﺎي ﺟﺪﻳﺪ، ﻣﺴﺌﻠﻪ ﺣ ﻞ ﺧﻮاھﺪ ﺷﺪ. در ﭼﻨﯿﻦ‬ ‫ﺷﺮاﻳﻄﻲ ﻣﻤﻜﻦ اﺳﺖ ﻛﻨﺪي ﺑﺎرﮔﺬاري و اﺟﺮاي ﻛﺪھﺎي ﺟﺎوا اﺳﻜﺮﻳﭙﺖ در ﻧﺮماﻓﺰارھﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ‬ ‫ﻋﻤﻼ ﻣﺰﻳﺖ ﻛﺎھﺶ زﻣﺎن اﻧﺘﻈﺎر ﺑﺮاي ﺑﺎرﮔﺬاري ﻣﺠﺪد ﺻﻔﺤﻪ را ﺧﻨﺜﻲ ﻛﻨﺪ و ﻧﻘﺾ ﻏﺮض ﺷﻮد. ﺧﻮﺷﺒﺨﺘﺎﻧﻪ‬ ‫ﻣﺮﺗﺒﺎ ﭘﺮدازﻧﺪه ھﺎي ﺳﺮﻳﻊﺗﺮي وارد ﺑﺎزار ﻣﻲﺷﻮﻧﺪ و ﻣﻲﺗﻮان اﻣﯿﺪوار ﺑﻮد ﻛﻪ اﻳﻦ ﻣﺸﻜﻞ ﻗﺒﻞ از آنﻛ ﻪ ﺟﺪي‬ ‫ﺷﻮد، ﻧﺎﭘﺪﻳﺪ ﺷﻮد.‬ ‫ﭘﯿﺎده ﺳﺎزي‪Ajax‬‬ ‫ﻳﻜﻲ دﻳﮕﺮ از ﻣﺸﻜﻼﺗﻲ ﻛﻪ در ارﺗﺒﺎط ﺑﺎ ايﺟﻜﺲ ﺑ ﻪ ﻧﻈﺮ ﻣﻲرﺳﺪ اﻳﻨﺴﺖ ﻛ ﻪ ﻛﺎر زﻳﺎدي از ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ‬ ‫ﻣﻲ ﻃﻠﺒﺪ و در ﺣﺎل ﺣﺎﺿﺮ اﺟﺮاي ﻣﻮﻓﻘﯿﺖآﻣﯿﺰ ﻳﻚ اﻳﻨﺘﺮﻓﯿﺲ ﺣﺮﻓﻪاي ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ ﻛﺎري ﺑﺴﯿﺎر دﺷﻮار و‬ ‫وﻗﺖﮔﯿﺮ اﺳﺖ. ﻳﻌﻨﻲ ‪Ajax‬ﺑﻪ ھﻤﺎن اﻧﺪازه ﻛﻪ ﻛﺎر ﺑﺎزدﻳﺪﻛﻨﻨﺪهھﺎ را آﺳﺎن ﻣﻲﻛﻨﺪ، ﻛﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن را ﻣﺸﻜﻞ‬ ‫ﻣﻲ ﻛﻨﺪ! ﺑﺎ اﻳﻦ ﺣﺎل ايﺟﻜﺲ روي ﭘﻠﺘﻔﺮمھﺎي ﻣﺨﺘﻠﻒ ﭘﯿﺎدهﺳﺎزي ﺷﺪه و ﻣﺠﻤﻮﻋ ﻪ اﺑﺰارھﺎي ﻣﺨﺘﻠﻔﻲ ﺑﺮاي‬ ‫ﺗﺴﮫﯿﻞ ﻛﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ﻋﺮﺿ ﻪ ﺷﺪه اﺳﺖ ﺗﺎ ﺗﺠﺮﺑ ﻪ ﺷﯿﺮﻳﻦﺗﺮي از ‪ Ajax‬داﺷﺘ ﻪ ﺑﺎﺷﻨﺪ .‬ ‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن ‪ ASP.NET‬در ﺻﻮرﺗﻲ ﻛﻪ از ﻧﺴﺨﻪ دات ﻧﺖ 1.1 اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ﻣﻲﺗﻮان از ﻣﺎژول ‪Ajax.NET‬‬ ‫اﺳﺘ ﻔﺎده ﻛﻨﻨﺪ ﻛﻪ اوﻟﯿﻦ ﭘﯿﺎدهﺳﺎزي داتﻧﺘﻲ ايﺟﻜﺲ و راﻳﮕﺎن اﺳﺖ. ﻣﺎﻳﻜﺮوﺳﺎﻓﺖ در 0.2 ‪ ASP.NET‬اﻳﻦ‬ ‫ﻓﻨﺎوري را ﺑﺎ ﻧﺎم ‪ A tlas‬وارد ﭘﻠﺘﻔﺮم ﻛﺮده اﺳﺖ ﻛ ﻪ ﻋﻼﻗﻪﻣﻨﺪان ﻣﻲﺗﻮاﻧﻨﺪ ﻳﻜﺮاﺳﺖ ﺳﺮاغ آن ﺑﺮوﻧﺪ.‬ ‫ﺑﺮاي ﭘﻠﺘﻔﺮم ﺟﺎوا ﻧﯿﺰ ﭼﻨﺪﻳﻦ ﭘﯿﺎدهﺳﺎزي ﻣﺨﺘﻠﻒ، اﻏﻠﺐ اﭘﻦ ﺳﻮرس، وﺟﻮد درد. از ﺟﻤﻠﻪ ‪ AjaxAnywhere‬و‬ ‫‪A jaxTags‬را ﺑﺒﯿﻨﯿﺪ. ھﻤﭽﻨﯿﻦ ﭼﻨﺪﻳﻦ ﭘﯿﺎدهﺳﺎزي ﻣﺨﺼﻮص ‪PHP‬ﻣﻲﺗﻮاﻧﯿﺪ ﭘﯿﺪا ﻛﻨﯿﺪ .ﻣﺎژولھﺎي ‪ CPAINT‬و‬ ‫‪xajax‬از آن ﺟﻤﻠﻪاﻧﺪ. ﻣﺎژول ‪ CPAINT‬ﺑﺮا ي ‪ ASP‬ﻧﯿﺰ ﻗﺎﺑ ﻞ اﺳﺘﻔﺎده اﺳﺖ. ﭼﻨﺪ ﻣﺎژول دﻳﮕﺮ ھﻢ ﻣﺎﻧﻨﺪ ‪GeneXus‬‬ ‫وﺟﻮد دارﻧﺪ ﻛ ﻪ ﻣﺎﻟﺘﻲ ﭘﻠﺘﻔﺮم ھﺴﺘﻨﺪ. ﺑﺮاي ھﺮﻳﻚ از ﭘﻠﺘﻔﺮم ھﺎي ‪ColdFusion ، Perl‬و ‪ P ython‬ﻧﯿﺰ دﺳﺖﻛﻢ ﻳﻚ‬ ‫ﭘﯿﺎدهﺳﺎزي ﻣﻌﺮوف وﺟﻮد دارد. ﻓﮫﺮﺳﺖ ﻛﺎﻣﻞ ھﻤ ﻪ اﻳﻦ ﭘﯿﺎدهﺳﺎزيھﺎ را ﺑﻪ ھﻤﺮاه آدرس ﺳﺎﻳﺖ و ﻟﯿﻨﻚ داﻧﻠﻮد‬ ‫آﻧﮫﺎ را ﻣﻲﺗﻮاﻧﯿﺪ در ﺿﻤﯿﻤﻪ آﻧﻼﻳﻦ ھﻤﯿﻦ ﻣﻘﺎﻟ ﻪ ﻛﻪ ھﻤﺰﻣﺎن ﺑﺎ اﻧﺘﺸﺎر اﻳﻦ ﺷﻤﺎره در ﺑﺨﺶ داﻧﻠﻮد ﺳﺎﻳﺖ‬ ‫ﻣﺎھﻨﺎﻣﻪ ﺷﺒﻜﻪ ﻗﺮار ﻣﻲ ﮔﯿﺮد، ﭘﯿﺪا ﻛﻨﯿﺪ.‬ ‫ﺑﮫﺮوز ﻧﻮﻋﻲﭘﻮر‬ ‫‪Ajax‬ﭼﯿﺴﺖ؟‬ ‫واژه ‪ Ajax‬ﺑﺎ ﺗﻠﻔﻆ< ایﺟﮑﺲ >ﯾﺎ< ایژاﮐﺲ >ﺳﺮﻧﺎم ﻋﺒﺎرت ‪ Asynchronous JavaScript and XML‬و ﺑﻪ‬ ‫ﻣﻌﻨﯽ< ﺗﺮﮐﯿﺐ ﻧﺎﻣﺘﻘﺎرن ﺟﺎوا اﺳﮑﺮﯾﭙﺖ و ‪>XML‬اﺳﺖ. ﻣﺎھﯿﺖ ﺻﻔﺤﺎت وب و ﭘﺮوﺗﮑﻞ ‪ HTTP‬ﺑﻪ ﮔﻮﻧﻪای اﺳﺖ‬ ‫ﮐ ﻪ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل وﻗﺘﯽ درﺣﺎل وبﮔﺮدی ھﺴﺘﯿﻢ، ﺑ ﻪ ازای ھﺮ ﮐﻨﺶ و واﮐﻨﺶ ﻣﯿﺎن ﻣﺎ و ﺳﺎﯾﺘﯽ ﮐﻪ در ﺣﺎل‬ ‫ﮐﺎر ﺑﺎ آن ھﺴﺘﯿﻢ، ﮐﻞ ﯾﮏ ﺻﻔﺤ ﻪ وب از ﻧﻮ ﺑﺎرﮔﺬاری و ﺗﺎزهﺳﺎزی )‪ (refresh‬ﻣﯽﺷﻮد .‬ ‫ایﺟﮑﺲ ﻓﻨﺎوری ﺟﺪﯾﺪی اﺳﺖ ﮐ ﻪ ﺗﻐﯿﯿﺮ ﻣﺤﺴﻮﺳﯽ را در اﯾﻦ ﺳﻨﺎرﯾﻮ ﺑﻪ وﺟﻮد ﻣﯽآورد؛ ﺑﻪ اﯾﻦ ﺗﺮﺗﯿﺐ ﮐﻪ ﺑ ﻪ‬ ‫ﺟﺎی ﺑﺎرﮔﺬاری ﻣﺠﺪد ﮐﻞ ﺻﻔﺤﻪ، ﻓﻘﻂ ﻗﺴﻤﺘﯽ ﺗﻐﯿﯿﺮ ﻣﯽﮐﻨﺪ ﮐﻪ ﻗﺮار اﺳﺖ اﻃﻼﻋﺎت ﺟﺪﯾﺪ را ﺑﻪ ﻧﻤﺎﯾﺶ درآورد‬ ‫و ﮐﻠﯿﻪ ﻋﻤﻠﯿﺎت ارﺳﺎل اﻃﻼﻋﺎت و درﯾﺎﻓﺖ ﻧﺘﺎﯾ ﺞ در ﭘﺸﺖ ﺻﺤﻨﻪ اﻧﺠﺎم ﻣﯽﺷﻮد. در ﻧﺘﯿﺠﻪ ھﯿﭻﮔﺎه ﺻﻔﺤﻪ‬ ‫ﺳﻔﯿﺪ و ﺧﺎﻟﯽ وب در ﻓﻮاﺻﻞ ﮐﻨﺶ و واﮐﻨﺶھﺎی ھﻨﮕﺎم ﮐﺎر ﺑﺎ ﻣﺮورﮔﺮ دﯾﺪه ﻧﻤﯽﺷﻮد و اﺣﺴﺎﺳﯽ ﻣﺸﺎﺑ ﻪ‬ ‫ﺗﺠﺮﺑﻪ ﮐﺎر ﺑﺎ ﯾﮏ ﻧﺮماﻓﺰار دﺳﮑﺘﺎپ ﺑﻪ ﮐﺎرﺑﺮ دﺳﺖ ﻣﯽدھﺪ.‬ ‫ﺟﺎدوی ایﺟﺎﮐﺲ ﭼﯿﺰی ﻧﯿﺴﺖ ﺟﺰ ﯾﮏ ﻓﮑﺮ ﺑﮑﺮ و آن ھﻢ ﺗﺮﮐﯿﺐ ﮐﺮدن ﺟﺎوا اﺳﮑﺮﯾﭙﺖ و ‪ XML‬در‬ ‫ﻗﺎﻟﺐ ﯾﮏ ﻣﻮﺟﻮد ﻧﺮماﻓﺰاری ﺟﺪﯾﺪ .‬ ‫اﺻﻄﻼح ‪ Ajax‬را اوﻟﯿﻦ ﺑﺎر ﮐﺎرﺷﻨﺎﺳﯽ از ﺷﺮﮐﺖ ‪ Adaptive Path‬ﺑ ﻪ ﻧﺎم ﺟﺴﯽ ﺟﯿﻤﺰﮔﺮت در ﻣﻘﺎﻟﻪای ﺑﺎ‬ ‫ﻋﻨﻮان< ایﺟﮑﺲ؛ رھﯿﺎﻓﺖ ﺟﺪﯾﺪی در ﺑﺮﻧﺎﻣﻪ ھﺎی ﺗﺤﺖ وب >ﻣﻄﺮح ﮐﺮد و ﺧﯿﻠﯽ ﺳﺮﯾﻊ ﻣﻮرد اﺳﺘﻘﺒﺎ ل‬ ‫ﮔﺴﺘﺮده ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن وب در ﺳﺮاﺳﺮ ﺟﮫﺎن ﻗﺮارﮔﺮﻓﺖ. اﻋﺘﻘﺎد ﻋﻤﻮﻣﯽ اﯾﻦ اﺳﺖ ﮐ ﻪ ﺗﺎرﯾﺨﭽ ﻪ ﺑﻪ ﮐﺎرﮔﯿﺮی‬ ‫ﺗﮑﻨﯿﮏ ﻣﺬﮐﻮر ﺑﻪ ﭘﯿﺪاﯾﺶ ﻧﺮماﻓﺰار ‪ Outlook WebAccess‬و اﺳﺘﻔﺎده از ﻓﺮﻣﺎن ‪ XMLHttpRequest‬ﮐﻪ‬ ‫ﻣﺎﯾﮑﺮوﺳﺎﻓﺖ اﺑﺪاع ﮐﺮده و در ﻧﺮماﻓﺰار اﯾﻨﺘﺮﻧﺖ اﮐﺴﭙﻠﻮر ﺑﻪﮐﺎر رﻓﺘﻪ اﺳﺖ، ﺑﺮﻣﯽﮔﺮدد. اﻣﺎ اﻣﺮوزه اﻏﻠﺐ‬ ‫ﻣﺮورﮔﺮھﺎی ﻣﮫﻢ و ﺷﻨﺎﺧﺘﻪﺷﺪه )از ﺟﻤﻠ ﻪ ﻓﺎﯾﺮﻓﺎﮐﺲ( از آن ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﻨﺪ و دﯾﮕﺮ ﯾﮏ ﻓﻨﺎوری ﻣﺤﺪود ﺑ ﻪ‬ ‫اﯾﻨﺘﺮﻧﺖ اﮐﺴﭙﻠﻮرر ﻧﯿﺴﺖ.‬ ‫ﭼﺮا ‪ Ajax‬اﯾﻦ ﻗﺪر اھﻤﯿﺖدارد؟‬ ‫ﻓﻨﺎوری ایﺟﮑﺲ ﺟﺪﯾﺪ اﺳﺖ و ﺷﮕﻔﺖاﻧﮕﯿﺰ ﺑ ﻪﻧﻈﺮ ﻣﯽرﺳﺪ. وﻟﯽ در ﺣﻘﯿﻘﺖ ﮐ ﻞ اﯾﻦ ﺷﻌﺒﺪه ﺑﺮ اﺳﺎس‬ ‫ﻓﻨﺎوریھﺎﯾﯽ ﺑﻨﺎ ﺷﺪه اﺳﺖ ﮐﻪ ھﻢاﮐﻨﻮن ﻣﻮﺟﻮدﻧﺪ: ﺟﺎوا اﺳﮑﺮﯾﭙﺖ و .‪ XML‬ھﺮ دوی اﯾﻦ ﻓﻨﺎوری ھﺎ ﺗﺎ ﺣﺪ‬ ‫زﯾﺎدی ﺑﺎز ھﺴﺘﻨﺪ و ﻣﻨﺤﺼﺮ ﺑﻪ ﺷﺮﮐﺖ ﺧﺎﺻﯽ ﻧﯿﺴﺘﻨﺪ. ﺑ ﻪ ھﻤﯿﻦ دﻟﯿﻞ اﯾﻦ روزھﺎ ﺗﻤﺎم ﻣﺤﺎﻓﻞ دﻧﯿﺎی ﺑﺮﻧﺎﻣ ﻪ‬ ‫ﻧﻮﯾﺴﯽ ﻣﻤﻠﻮ از ﻣﻘﺎﻻت و ﺗﺤﻠﯿﻞھﺎﯾﯽ درﺑﺎره ‪ Ajax‬اﺳﺖ. ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧ ﻪ ﻣﯽﺗﻮاﻧﯿﺪ ﺻﻔﺤﻪ ﻧﺨﺴﺖ ﺳﺎﯾﺖ‬ ‫ﻣﻮﺳﻮم ﺑﻪ< ﮐﺎﻧﺎل ﺷﺒﮑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن ﺳﺎن >را ﺑﺎزﮐﻨﯿ ﺪ.‬ ‫ﺑﯿﺸﺘﺮ اﯾﻦ ﺻﻔﺤﻪ )در زﻣﺎن ﻧﮕﺎرش اﯾﻦ ﯾﺎدداﺷﺖ( ﺑﻪ ﻣﻘﺎﻻت و ﻣﻄﺎﻟﺐ ﻣﺘﻨﻮﻋﯽ درﺑﺎره ‪ Ajax‬اﺧﺘﺼﺎص ﯾﺎﻓﺘﻪ‬ ‫اﺳﺖ. ﻣﺠﻼت ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﻧﯿﺰ ﻣﻘﺎﻻت ﻣﺘﻌﺪدی در اﯾﻦ زﻣﯿﻨﻪ ﻣﻨﺘﺸﺮ ﮐﺮدهاﻧﺪ و ﺳﺎﯾﺖ ھﺎی ﻣﻌﺮوﻓﯽ ﻣﺎﻧﻨﺪ "‪O‬‬ ‫‪Reilly‬و ‪ xml.com‬ﻧﯿﺰ در اﯾﻦ ﺑﺎره ﻣﻄﻠﺐ دارﻧﺪ .‬ ‫اﯾﻦ ﻓﻨﺎوری از ﯾﮏ ﺟﻨﺒﻪ دﯾﮕﺮ ﻧﯿﺰ اھﻤﯿﺖ دارد .ﺑﻪدﻟﯿﻞ ﻋﺪم ﻧﯿﺎز ﺑ ﻪ ﺑﺎرﮔﺬار ی ﻣﺠﺪد ﮐﻞ ﯾﮏ ﺻﻔﺤﻪ وب، ﻣﻘﺪار‬ ‫دادهھﺎﯾﯽ ﮐﻪ ﻻزم اﺳﺖ ﺑﺮای ﺗﮑﻤﯿﻞ ﯾﮏ ‪ Interaction‬ﻣﯿﺎن ﮐﺎرﺑﺮ و ﺳﺎﯾﺖ ﻣﺒﺎدﻟ ﻪ ﺷﻮد، ﺑﻪ ﺷﺪت ﮐﺎھﺶ‬ ‫ﻣﯽﯾﺎﺑﺪ و اﯾﻦ ﺑﻪ ﻣﻌﻨﯽ اﻓﺰاﯾﺶ ﻣﺤﺴﻮس ﺳﺮﻋﺖ ﻧﺮماﻓﺰارھﺎی ﺗﺤﺖ وب، ﺳﮫﻮﻟﺖ ﺑﻪﮐﺎرﮔﯿﺮی اﯾﻨﺘﺮﻓﯿﺲھﺎی‬ ‫ﻣﺒﺘﻨﯽ ﺑﺮ ایﺟﮑﺲ و ﮐﺎرﺑﺮﭘﺴﻨﺪﺗﺮﺷﺪن آن ھﺎ ﻣﯽﺷﻮد. ﺑ ﻪ ھﻤﯿﻦ دﻟﯿﻞ اﯾﻦ روزھﺎ اﮐﺜﺮ ﭘﻮرﺗﺎلھﺎی ﺑﺰرگ )ﻣﺎﻧﻨﺪ‬ ‫ﯾﺎھﻮ( ﻣﺸﻐﻮل ﻃﺮاﺣﯽ اﯾﻨﺘﺮﻓﯿﺲھﺎی ﻣﺒﺘﻨﯽ ﺑﺮ ‪ Ajax‬ھﺴﺘﻨﺪ .‬ ‫ﺑﺎ اﯾﻦ ھﻤﻪ ﻣﺰاﯾﺎی ایﺟﮑﺲ ﺑﻪ ھﻤﯿﻦ ﻣﻮارد ﺧﺘﻢ ﻧﻤﯽﺷﻮد. ﺗﺼﻮر ﮐﻨﯿﺪ وﻗﺘﯽ در ﻃﻮ ل ﺷﺒﺎﻧﻪ روز ﻣﯿﻠﯿﺎردھﺎ ﺑﺎر‬ ‫ﻓﺮآﯾﻨﺪ ﺑﺎرﮔﺬاری ﻣﺠﺪد ﺻﻔﺤﺎت وب ﺗﻌﺎﻣﻠﯽ در ﺷﺒﮑﻪ اﯾﻨﺘﺮﻧﺖ ﺗﮑﺮار ﻣﯽﺷﻮد، اﺳﺘﻔﺎده از ایﺟﮑﺲ ﭼﮕﻮﻧﻪ‬ ‫ﻣﻮﺟﺐ آزاد ﺷﺪن ﭘﮫﻨﺎیﺑﺎﻧﺪ اﯾﻨﺘﺮﻧﺖ و در ﻧﺘﯿﺠ ﻪ ﻣﯿﻠﯿﺎردھﺎ دﻻر ﺻﺮﻓﻪﺟﻮﯾﯽ اﻗﺘﺼﺎدی در اﯾﻦ زﻣﯿﻨﻪ ﻣﯽﺷﻮد و‬ ‫اﯾﻦ ﺑﻪ ﻧﻮﺑﻪ ﺧﻮد اﻧﻘﻼﺑﯽ در ﻋﺮﺻﻪ وب و ﻓﻀﺎی ﺳﺎﯾﺒﺮ ﺑﻪ ﺷﻤﺎر ﻣﯽرود .اﯾﻦ ﺗﺤﻮل در ﺷﺮاﯾﻄﯽ اﺗﻔﺎق ﻣﯽاﻓﺘﺪ‬ ‫ﮐ ﻪ ھﻤﺰﻣﺎن ﻓﻨﺎوریھﺎی اﯾﻨﺘﺮﻧﺖ ﭘﺮﺳﺮﻋﺖ ھﻤﭽﻮن ‪ ADSL‬ﺑ ﻪ ﺷﺪت در ﺣﺎل رﺷﺪ ھﺴﺘﻨﺪ .‬ ‫ﺣﺎل ﺗﺼﻮر ﮐﻨﯿﺪ اﮔﺮ ﻓﻨﺎوری ایﺟﮑﺲ در ﻣﻘﯿﺎس ﮔﺴﺘﺮدهای ﻣﻮرد اﺳﺘﻔﺎده ﻧﺮماﻓﺰارھﺎی ﺗﺤﺖ وب ﻗﺮارﮔﯿﺮد.‬ ‫آﻧﮕﺎه اﻓﺰاﯾﺶ ﺳﺮﻋﺖ ﮐﺎر ﺑﺎ اﯾﻨﺘﺮﻧﺖ ﭼﻨﺪ ﺑﺮاﺑﺮ ﺧﻮاھﺪ ﺷﺪ. ﭼﻨﯿﻦ ﺗﺤﻮﻟﯽ ﻣﯽﺗﻮاﻧﺪ اﯾﻨﺘﺮﻧﺖ را ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ دوم‬ ‫ﮐﺎرﺑﺮان ﺗﺒﺪﯾﻞ ﮐﻨﺪ. ﺑ ﻪ ﮔﻮﻧﻪای ﮐ ﻪ ﺑﺮای آنھﺎ اﺟﺮای ﯾﮏ ﻧﺮماﻓﺰار از روی وب ﺗﻔﺎوت ﻣﺤﺴﻮﺳﯽ ﺑﺎ اﺟﺮای آن از‬ ‫روی ﮐﺎﻣﭙﯿﻮﺗﺮ دﺳﮑﺘﺎپ ﻧﺪاﺷﺘ ﻪ ﺑﺎﺷﺪ. در اﯾﻦ ﺻﻮرت ﻣﻤﮑﻦ اﺳﺖ واﻗﻌﺎ ﺑﺨﺶ ﻣﮫﻤﯽ از ﺗﻮان ﭘﺮدازﺷﯽ‬ ‫ﻧﺮماﻓﺰارھﺎ، ﭼﻪ از ﻧﻮع دﺳﮑﺘﺎپ و ﭼﻪ از ﻧﻮع ﺗﺤﺖ وب ﺑ ﻪ ﺳﯿﺴﺘﻢھﺎی ﻣﻮﺳﻮم ﺑﻪ ‪ Web Service‬واﮔﺬار ﺷﻮد.‬ ‫از اﯾﻦ رو ﮐﺴﺎﻧﯽ ﮐﻪ ﻣﺒﺘﮑﺮ و ﻣﺸﻮق اﯾﺪه وب ﺳﺮوﯾﺲ ﺑﻮدهاﻧﺪ، اﯾﻦ روزھﺎ اﻧﮕﯿﺰه ﺗﺎزهای ﺑﺮای ﺳﺮﻋﺖ‬ ‫ﺑﺨﺸﯿﺪن ﺑ ﻪ اﯾﻦ ﻓﻨﺎوری ﭘﯿﺪا ﮐﺮدهاﻧﺪ و ﺗﻼش ﻣﯽ ﮐﻨﻨﺪ دو ﻓﻨﺎوری ایﺟﮑﺲ و وب ﺳﺮوﯾﺲ را ﺑ ﻪﯾﮑﺪﯾﮕﺮ ﭘﯿﻮﻧﺪ‬ ‫دھﻨﺪ و راھﮑﺎرھﺎی ﺗﺎزهای ﺑﯿﺎﻓﺮﯾﻨﻨﺪ.‬ ‫ﮐﺪا م ﺳﺎﯾﺖھﺎ از ایﺟﮑﺲ اﺳﺘﻔﺎده ﮐﺮدهاﻧﺪ؟‬ ‫دﻧﯿﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ وب ھﻨﻮز درﮔﯿﺮ ھﯿﺠﺎﻧﺎت ﻣﺮﺑﻮط ﺑﻪ آﺷﻨﺎﯾﯽ ﺑﺎ اﯾﻦ ﭘﺪﯾﺪه اﺳﺖ و در ﺣﺎ ل ﺑﺮرﺳﯽ‬ ‫ﻣﺸﮑﻼت ﺗﮑﻨﯿﮑﯽ و ھﻀﻢ و ﺟﺬب آن در ﺑﺎﻓﺖ ﺑﺮﻧﺎﻣﻪھﺎی ﺗﺤﺖ وب ﻣﯽﺑﺎﺷﺪ. ﺑﻪ ھﻤﯿﻦ دﻟﯿ ﻞ ﻣﯿﺰان اﺳﺘﻔﺎده‬ ‫ﻋﻤﻠﯽ از آن ﭼﻨﺪان ﮔﺴﺘﺮده ﻧﯿﺴﺖ. اﻣﺎ ﭼﻮن ﮐﺎراﯾﯽ ایﺟﮑﺲ دﯾﮕﺮ ﺑﺮای ھﻤ ﻪ ﺛﺎﺑﺖ ﺷﺪه اﺳﺖ، ﺣﺮﮐﺖھﺎی‬ ‫ﺑﺰرﮔﯽ در ﺳﺮاﺳﺮ اﯾﻨﺘﺮﻧﺖ ﺑﻪ ﺳﻤﺖ اﺳﺘﻔﺎده از اﯾﻦ ﻓﻨﺎوری در ﺟﺮﯾﺎن اﺳﺖ. از ﺟﻤﻠﻪ اﯾﻨﺘﺮﻓﯿﺲ ﻧﺴﺨﻪ دوم‬ ‫‪Yahoo Mail‬ﮐﻪ ﺑ ﻪ ﻧﺴﺨ ﻪ ﺑﺘﺎ ﻣﻌﺮوف اﺳﺖ و ﻓﻌﻼ در دﺳﺘﺮس ﮐﺎرﺑﺮان ﺳﺮوﯾﺲ ﻏﯿﺮ راﯾﮕﺎن ﯾﺎھﻮ ﻗﺮاردارد، از‬ ‫ھﻤﯿﻦ ﻓﻨﺎوری اﺳﺘﻔﺎده ﻣﯽﮐﻨﺪ ﮐﻪ ﺑﻪ زودی اﯾﻨﺘﺮﻓﯿﺲ ﺟﺪﯾﺪ در دﺳﺘﺮس ﻋﻤﻮم ﻗﺮار ﻣﯽﮔﯿﺮد. ﺳﺮوﯾﺲ ‪Gmail‬‬ ‫و ‪ Google Map‬ﻧﯿﺰ از اﯾﻦ ﻓﻨﺎوری اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ .‬ ‫ﺟﮫﺖ درﻳﺎﻓﺖ ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ ھﺎ و ﻣﻘﺎﻻت ‪ ajax‬ﺑ ﻪ آدرس زﻳﺮ ﻣﺮاﺟﻌ ﻪ‬ ‫ﻧﻤﺎﺋﯿﺪ:43=‪http ://www.zamanphp .blogsky.com/?PostID‬‬ ‫‪IranPHP‬‬ ‫‪Ajax‬ﻳﺎ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ و ‪ xml‬ﻏﯿﺮ ھﻤﺰﻣﺎن)‪ ، (Asynchronus Javascript and XML‬ﺟﺪﻳﺪﺗﺮﻳﻦ ھﻤﮫﻤﻪ ﻣﻮﺟﻮد‬ ‫در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ وب اﺳﺖ. ﺑﺎ اﺳﺘﻔﺎده از ﺷﺊ‪ ، XMLHTTPRequest‬و‪ ، HTML‬و ‪ JavaScript‬و‪ ، CSS‬ﻣﯽ‬ ‫ﺗﻮاﻧﯿﺪ ‪ refresh‬ﺻﻔﺤ ﻪ را ﮐﻪ )ﺗﺎ ﭼﻨﺪ ﻣﺎه ﭘﯿﺶ( ﻳﮏ ﺑﺨﺶ اﺟﺒﺎری از ارﺳﺎ ل داده ﺑﻪ ﺳﻤﺖ ﺳﺮور ﺑﻮد، ﻋﻮض‬ ‫ﮐﻨﯿﺪ.‬ ‫در اﻳﻦ ﻣﻘﺎﻟﻪ ﻗﺼﺪ دارم ﺗﺎ 3 ﮐﺎرﺑﺮد ﻋﻤﻠﯽ و ﺳﺎده از ‪ Ajax‬ﺑﺮ روی ﺳﺮور را ﺑ ﻪ ﺷﻤﺎ ﻧﺸﺎن دھﻢ. ﺑﺮای اداﻣ ﻪ‬ ‫ﻧﯿﺎز اﺳﺖ ﮐﻪ ﺗﺎ ﺣﺪی ﺑﺎ‪ ، HTML‬و ‪ Javascript‬و ‪ PHP‬آﺷﻨﺎ ﺑﺎﺷﯿﺪ. ﺑﺎ اﻳﻦ ﺣﺎل ﻣﻦ ﺳﻌﯽ ﻣﯽ ﮐﻨﻢ ﮐ ﻪ ھﻤﻪ‬ ‫ﭼﯿﺰ را ﺑﻪ ﺷﮑﻞ ﺳﺎده ﺑﯿﺎن ﮐﻨﻢ ﺗﺎ ﭼﯿﺰی را از دﺳﺖ ﻧﺪھﯿﺪ.‬ ‫ﺗﻮﺟﻪ :در اﻳﻦ ﻣﻘﺎﻟﻪ ﻓﺮض ﻣﯽ ﮐﻨﯿﻢ ﮐ ﻪ ﺷﻤﺎ ﻳﮏ وب ﺳﺮور ‪ PHP‬را در ﺣﺎل اﺟﺮا دارﻳﺪ.‬ ‫ﻓﻌﺎل ﺳﺎزی ارﺗﺒﺎﻃﺎت ﮐﻼﻳﻨﺖ -ﺑﻪ -ﺳﺮور‬ ‫2ﺗﺎﺑﻊ ﺳﺎده ﻻزم اﺳﺖ ﺗﺎ ‪ Ajax‬ﮐﺎر ﮐﻨﺪ. آﻧﺪو ھﻤﻪ آﻧﭽ ﻪ را ﮐﻪ ﺑﺮای اﻧﺘﻘﺎل داده ﺑﻪ ﺳﺮور و ھﻤﭽﻨﯿﻦ ﭘﺮدازش‬ ‫ﭘﺎﺳﺦ ﻓﺮﺳﺘﺎده ﺷﺪه از ﺳﺮور ﻻزم اﺳﺖ، ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﻨﺪ. ﻣﺎ ﻳﮏ ﻓﺎﻳﻞ .‪ js‬ﮐﻪ ﺷﺎﻣﻞ اﻳﻦ دو ﺗﺎﺑﻊ اﺳﺖ ﻣﯽ‬ ‫ﺳﺎزﻳﻢ ﮐ ﻪ در ھﺮ 3 ﻣﺜﺎل ‪ Ajax‬ﻣﺎ اﺳﺘﻔﺎده ﺧﻮاھﺪ ﺷﺪ.‬ ‫ﻳﮏ ﻓﺎﻳﻞ ﺟﺪﻳﺪ در ادﻳﺘﻮر ﻣﺘﻦ دﻟﺨﻮاه ﺧﻮد اﻳﺠﺎد ﮐﻨﯿﺪ و آﻧﺮا ‪ ajax.js‬ﺑﻨﺎﻣﯿﺪ. ﮐﺪ زﻳﺮ را ﮐﭙﯽ و در آن ﻓﺎﻳﻞ ‪paste‬‬ ‫ﮐﺮده و آﻧﺮا ‪ save‬ﮐﻨﯿﺪ:‬ ‫{ )‪function DoCallback(data‬‬ ‫‪// branch for native XMLHttpRequest object‬‬ ‫{ )‪if (window.XMLHttpRequest‬‬ ‫;)(‪req = new XMLHttpRequest‬‬ ‫;‪req.onreadystatechange = processReqChange‬‬ ‫;)‪req.open('POST', url, true‬‬ ‫‪req.setRequestHeader('Content-Type', 'application/x-www-form‬‬‫;)'‪urlencoded‬‬ ‫;)‪req.send(data‬‬ ‫‪// branch for IE/Windows ActiveX version‬‬ ‫}‬ ‫{ )‪else if (window.ActiveXObject‬‬ ‫;)'‪req = new ActiveXObject('Microsoft.XMLHTTP‬‬ ‫{ )‪if (req‬‬ ‫;‪req.onreadystatechange = processReqChange‬‬ ‫;)‪req.open('POST', url, true‬‬ ‫-‪req.setRequestHeader('Content-Type', 'application/x-www-form‬‬ ‫;)'‪urlencoded‬‬ ‫;)‪req.send(data‬‬ ‫}‬ ‫}‬ ‫}‬ ‫{ )(‪function processReqChange‬‬ ‫'‪// only if req shows 'loaded‬‬ ‫{ )4 == ‪if (req.readyState‬‬ ‫'‪// only if 'OK‬‬ ‫{ )002 == ‪if (req.status‬‬ ‫;)‪eval(what‬‬ ‫}‬ ‫{ ‪else‬‬ ‫+ ' :‪alert('There was a problem retrieving the XML data‬‬ ‫;)‪req.responseText‬‬ ‫}‬ ‫}‬ ‫}‬ ‫ﺣﺎﻻ ﮐﻪ ﻓﺎﯾﻞ ‪ is‬ﺗﺎن را اﳚﺎد ﮐﺮده اﯾﺪ، ﺑﯿﺎﯾﯿﺪ ﺑﻪ اوﻟﲔ ﮐﺎرﺑﺮد .‪Ajax‬‬ ‫در وب ﺳﺎﯾﺘﺘﺎن ﻣﯽ ﭘﺮدازﯾﻢ.‬ ‫ﮐﺎرﺑﺮد ﺷﻤﺎره 1 اﺟﮑﺲ: ﺗﺎﻳﯿﺪ اﻋﺘﺒﺎر ﻳﮏ‪login‬‬ ‫ﺑﯿﺎﻳﯿﺪ ﺑﺒﯿﻨﻢ ﭼﮕﻮﻧﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺠﺎی ﺑﺎزﮔﺸﺖ دوﺑﺎره ﺑﻪ ﺳﺮور ﺟﮫﺖ ﺗﺎﻳﯿﺪ اﻋﺘﺒﺎر ﻧﺎم ﮐﺎرﺑﺮی/رﻣﺰ ﻋﺒﻮر ﺑﺮای ﻳﮏ‬ ‫ﻓﺮم ‪ login‬از ‪ Ajax‬اﺳﺘ ﻔﺎده ﮐﻨﯿﺪ.‬ ‫ﺑﯿﺎﻳﺪ ﺑﺎ اﻳﺠﺎد اﺳﮑﺮﻳﭙﺖ ‪ PHP‬ﮐﻪ ‪ Ajax‬ﺑﺎ آن "ﺻﺤﺒﺖ" ﺧﻮاھﺪ ﮐﺮد، ﺷﺮوع ﮐﻨﯿﻢ. ﻳﮏ ﻓﺎﻳﻞ ﺑ ﻪ ﻧﺎم ‪ login.php‬ﺑﺮ‬ ‫روی وب ﺳﺮور در ھﻤﺎن داﻳﺮﮐﺘﻮری ﮐﻪ اﺳﮑﺮﻳﭙﺖ ‪ ajax.js‬را ﻗﺒﻼ اﻳﺠﺎد ﮐﺮده ﺑﻮدﻳﻢ، ﺑﺴﺎزﻳﺪ. ﮐﺪ ‪ PHP‬زﻳﺮ را در‬ ‫ﻓﺎﻳﻞ ‪ login.php‬ﮐﭙﯽ و ‪ paste‬ﮐﺮده و آﻧﺮا ‪ save‬ﻧﻤﺎﻳﯿﺪ:‬ ‫‪<?php‬‬ ‫{ ))]"‪if (isset($_POST["username"]) && isset($_POST["password‬‬ ‫;]"‪$username = $_POST["username‬‬ ‫;]"‪$password = $_POST["password‬‬ ‫)"‪if ($username = "user" && $password == "password‬‬ ‫;1 ‪echo‬‬ ‫‪else‬‬ ‫;0 ‪echo‬‬ ‫}‬ ‫{ ‪else‬‬ ‫;0 ‪echo‬‬ ‫}‬ ‫>?‬ ‫ﺗﻮﺟﻪ: واﺿﺢ اﺳﺖ ﮐﻪ اﻳﻦ ﻣﺜﺎل ﺧﯿﻠﯽ ﺳﺎده ﺷﺪه اﺳﺖ. در ﺣﺎﻟﺖ ﻣﻌﻤﻮل ﺷﻤﺎ از ﻳﮏ ﺑﺎﻧﮏ اﻃﻼﻋﺎت‬ ‫‪MySQL‬ﺑﺮای ذﺧﯿﺮه ‪ login‬ﮐﺎرﺑﺮان و ﻣﺮاﺣﻠﯽ از رﻣﺰﮔﺬاری ﺑﺮای ارﺳﺎل داده از ﮐﻼﻳﻨﺖ ﺑﻪ ﺳﺮور اﺳﺘﻔﺎده ﻣﯽ‬ ‫ﮐﻨﯿﺪ.‬ ‫در ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﺑﯿﺎﻳﯿﺪ ﺻﻔﺤﻪ ‪ login‬ﺧﻮد را ﺑﺴﺎزﻳﻢ. ﻳﮏ ﺻﻔﺤ ﻪ ﺟﺪﻳﺪ ﺑﺎ ﻧﺎم ‪ login.html‬اﻳﺠﺎد ﮐﻨﯿﺪ و ﮐﺪ زﻳﺮ را در‬ ‫آن ﮐﭙﯽ و ‪ paste‬ﻧﻤﺎﻳﯿ ﺪ:‬ ‫>‪<html‬‬ ‫>‪<head‬‬ <script> var url = "login.php"; var what = "LoginStatus(req.responseText)"; function CheckLogin() { var username = document.getElementById("username").value; var password = document.getElementById("password").value; DoCallback("username=" + username + "&password=" + password); } function LoginStatus(Status) { if(Status == 0) alert("Bad login!"); else alert("Login OK!"); } </script> <script src="ajax.js" type="text/javascript"></script> </head> <body> <pre>Username: <input id="username" type="text"><br> Password <input id="password" type="password"><br><br> <input type="button" value="Check Login" onClick="CheckLogin()"> </pre> </body> </html> ‫" را )ﺑﺪون ﮔﯿﻮﻣﻪ( در ﻓﯿﻠﺪ‬password" ‫" را در ﻓﯿﻠﺪ ﻧﺎم ﮐﺎرﺑﺮ ی و ﮐﻠﻤﻪ‬user" ‫ﺑﺮای ﺗﺴﺖ اوﻟﯿﻦ ﻣﺜﺎﻟﻤﺎن، ﮐﻠﻤﻪ‬ .‫" را ﮐﻠﯿﮏ ﻧﻤﺎﻳﯿﺪ‬CheckLogin" ‫رﻣﺰ ﻋﺒﻮر وارد ﮐﻨﯿﺪ و دﮐﻤﻪ‬ ‫ را ﺑﺎ ﭘﺎس دادن ﻣﻘﺎدﻳﺮ ﻓﯿﻠﺪھﺎی ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﮐﻨﯿﻢ، ﺷﺒﯿﻪ‬DoCallback ‫اﺑﺘﺪا ﻣﺎ ﺗﺎﺑﻊ‬ :‫زﻳﺮ‬ DoCallback("username="+username+"&password="+password); ‫ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﮔﺮﻓﺘ ﻪ ﺷﺪه از‬login.php ‫ ﺑﺮای ﻓﺮاﺧﻮاﻧﯽ ﺻﻔﺤﻪ‬Ajax ‫ از‬DoCallback ‫ﺗﺎﺑﻊ‬ ‫ ﻣﯽ ﮔﻮﻳﺪ ﮐﻪ‬Ajax ‫ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ﮐﻪ ﺑ ﻪ ﺗﺎﺑﻊ‬login.html ‫ﻓﺮم، اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ. 2 ﺗﺎ ﻣﺘﻐﯿﺮ در ﺑﺎﻻی ﻓﺎﻳﻞ‬ :‫ﭼ ﻪ ﮐﺎر ﮐﻨﺪ‬ var url = "login.php"; var what = "LoginStatus(req.responseText)"; ‫ ﻣﯽ ﮔﻮﻳﺪ ﮐﻪ ﭼ ﻪ‬Ajax ‫ ﺑﻪ‬what ‫ ﻣﯽ ﮔﻮﻳﺪ ﮐﻪ داده ھﺎﻳﺶ را ﮐﺠﺎ ﺑﻔﺮﺳﺘﺪ و ﻣﺘﻐﯿﺮ‬Ajax ‫ ﺑ ﻪ ﺗﺎﺑﻊ‬url ‫ﻣﺘﻐﯿﺮ‬ ‫ ﺣﺎوی‬req.responseText ‫ﺗﺎﺑﻌﯽ ﺑﺎﻳﺪ ﭘﺲ از آﻣﺎده ﺷﺪن ﺳﺮور ﺑﺮای ﻓﺮﺳﺘﺎدن داده ھﺎ ﻓﺮاﺧﻮاﻧﯽ ﺷﻮد. ﻣﺘﻐﯿﺮ‬ login ‫ ﻧﺎﻣﻮﻓﻖ و 1 ﺑﺮای‬login ‫ﻣﻘﺎدﻳﺮ ﺑﺎزﮔﺸﺖ داده ﺷﺪه ﺗﻮﺳﻂ ﺳﺮور ﺧﻮاھﺪ ﺑﻮد ﮐﻪ در اﻳﻦ ﺣﺎﻟﺖ 0 ﺑﺮای‬ :‫ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‬login.php ‫ﻣﻮﻓﻖ اﺳﺖ .ھﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در اﺳﮑﺮﻳﭙﺖ‬ if($username = "user" && $password == "password") echo 1; else echo 0; ‫ﮐﺎرﺑﺮد ﺷﻤﺎره 2 اﺟﮑﺲ ‪: Drop Down‬ﻟﯿﺴﺖ ﮐﺸﻮر و اﻳﺎﻟﺖ ھﺎ‬ ‫ﺑﯿﺸﺘﺮ ﻓﺮوﺷﮕﺎھﮫﺎی ‪ eCommerce‬ﺑﺮ روی اﻳﻨﺘﺮﻧﺖ، ﺑﻪ ﻣﻨﻈﻮر ﻣﺤﺎﺳﺒﻪ ھﺰﻳﻨﻪ ﺣﻤ ﻞ و ﻧﻘﻞ از ﺷﻤﺎ ﻣﯽ‬ ‫ﺧﻮاھﻨﺪ ﺗﺎ ھﻨﮕﺎم ﺳﻔﺎرش دادن، ﮐﺸﻮر و اﻳﺎﻟﺖ ﺧﻮد را اﻧﺘﺨﺎب ﻧﻤﺎﻳﯿﺪ. ﺑﻪ ﺟﺎی ﻟﻮد ﺷﺪن دوﺑﺎره ﺻﻔﺤ ﻪ ﺑﻌﺪ از‬ ‫اﻧﺘﺨﺎب ﮐﺸﻮر ﺑ ﻪ ﻣﻨﻈﻮر ﺑﺎزﻳﺎﺑﯽ ﻟﯿﺴﺖ اﻳﺎﻟﺘﮫﺎ، ﻣﯽ ﺗﻮاﻧﯿﻢ از اﺟﮑﺲ ﺑﺮای اﻧﺠﺎم ﭼﻨﯿﻦ ﮐﺎری اﺳﺘﻔﺎده ﮐﻨﯿﻢ،‬ ‫اﻣﺎ ﺑﺪون ‪ refresh‬ﺷﺪن ﺻﻔﺤﻪ.‬ ‫ﻳﮏ ﺻﻔﺤﻪ ﺟﺪﻳﺪ ﺑ ﻪ ﻧﺎم ‪ country.php‬اﻳﺠﺎد ﮐﺮده و ﮐﺪ زﻳﺮ را ﮐﭙﯽ و در آن ‪ paste‬ﻧﻤﺎﻳﯿﺪ:‬ ‫‪<?php‬‬ ‫;)(‪$states = array‬‬ ‫,"‪$states["Australia"] = array("New South Wales", "Queensland‬‬ ‫,"‪"Victoria‬‬ ‫‪"South Australia", "Tasmania", "Western Australia", "Northern‬‬ ‫;)"‪Territory‬‬ ‫,"‪$states["USA"] = array("California", "New York", "Ohio‬‬ ‫,"‪"Colorado", "Florida‬‬ ‫;)"‪"Texas", "Arizona", "Washington‬‬ ‫))]]"‪if (isset($_POST["country"]) && isset($states[$_POST["country‬‬ ‫{‬ ‫{ )‪foreach($states[$_POST["country"]] as $state‬‬ ‫;)‪printf("%s,", $state‬‬ ‫}‬ ‫}‬ ‫>?‬ ‫‪PHP‬ﺑﺎﻻ ﻳﮏ آراﻳﻪ از اﻳﺎﻟﺖ ھﺎ اﻳﺠﺎد ﻣﯽ ﮐﻨﺪ: ﻳﮑﯽ ﺑﺮای ‪ Australia‬و دﻳﮕﺮی ﺑﺮای .‪ USA‬زﻣﺎﻧﯿﮑ ﻪ ﻳﮏ ﮐﺸﻮر ﺑ ﻪ‬ ‫اﺳﮑﺮﻳﭙﺖ ﻓﺮﺳﺘﺎده ﺷﺪ )از ﻃﺮف ﺗﺎﺑﻊ اﺟﮑﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺟﺎوا اﺳﮑﺮﻳﭙﺖ(، اﻳﺎﻟﺘﮫﺎی ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﺷﮑﻞ ﻳﮏ‬ ‫رﺷﺘﻪ ‪ string‬ﮐ ﻪ ﺑﺎ ﮐﺎﻣﺎ از ھﻢ ﺟﺪا ﺷﺪه اﻧﺪ، ﺑﺎزﮔﺸﺖ داده ﻣﯽ ﺷﻮﻧﺪ؛ ﻧﻈﯿﺮ زﻳﺮ:‬ ‫3‪state1,state2,state‬‬ ‫ﻓﺎﻳﻞ ‪ HTML‬ﻣﺎ ‪ country.html‬ﺧﻮاھﺪ ﺑﻮد ﮐ ﻪ ﺷﺒﯿﻪ زﻳﺮ اﺳﺖ:‬ ‫>‪<html‬‬ ‫>‪<head‬‬ ‫>‪<script‬‬ ‫;"‪var url = "country.php‬‬ ‫;")‪var what = "SetStates(req.responseText‬‬ ‫{ )‪function GetStates(Country‬‬ ‫;)‪DoCallback("country=" + Country‬‬ ‫}‬ function SetStates(States) { var stateBox = document.getElementById("state"); stateBox.options.length = 0; if(States != "") { var arrStates = States.split(","); for(i = 0; i < arrStates.length; i++) { if(arrStates[i] != "") { stateBox.options[stateBox.options.length] = new Option(arrStates[i], arrStates[i]); } } } } </script> <script src="ajax.js" type="text/javascript"></script> </head> <body> <pre>Country: <select onChange="GetStates(this.options[this.selectedIndex].text)" id="country"> <option value=""></option> <option>Australia</option> <option>USA</option> </select><br>State: <select id="state"></select> </pre> </body> </html> country.php ‫ ﻳﮏ ﻟﯿﺴﺖ از اﻳﺎﻟﺘﮫﺎی آن ﮐﺸﻮر را از ﻓﺎﻳﻞ‬Ajax ‫زﻣﺎﻧﯿﮑﻪ ﺷﻤﺎ ﻳﮏ ﮐﺸﻮر اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﯿﺪ، ﺗﺎﺑﻊ‬ :‫ ﻣﺎ ﭘﺲ ﻣﯽ ﻓﺮﺳﺘﺪ‬SetStates ‫ﺑﺎزﮔﺸﺖ ﻣﯽ دھﺪ. ﺳﭙﺲ ﻟﯿﺴﺖ اﻳﺎﻟﺘﮫﺎ را ﺑﻪ ﺗﺎﺑﻊ‬ var url = "country.php"; var what = "SetStates(req.responseText)"; ‫ﮐﺎرﺑﺮد ﺷﻤﺎره 3 اﺟﮑﺲ: ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ‬ ‫ ﻧﺸﺎن ﻣﯽ دھﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﻣﯽ ﺗﻮان ﻟﯿﺴﺘﯽ از ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ از ﺳﻤﺖ ﺳﺮور را‬Ajax ‫آﺧﺮﻳﻦ ﻣﺜﺎل ﻣﻦ درﺑﺎره‬ ‫ را در ﻋﻤﻞ دﻳﺪم، ﻓﮑﺮ ﮐﺮدم ﮐ ﻪ اﻳﻦ ﻣﯽ ﺗﻮاﻧﺪ اﻳﺪه ﺧﻮﺑﯽ ﺑﺮای اﻧﺠﺎم‬Google Suggest ‫ﻧﺸﺎن داد. ﺑﻌﺪ اﻳﻨﮑﻪ‬ .‫ﮐﺎرھﺎی ﻣﺸﺎﺑﻪ ﺑﺎﺷﺪ‬ ‫ ﻣﺎن را ﺑﺴﺎزﻳﻢ ﮐﻪ ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ را ﺑﺮﮔﺸﺖ ﻣﯽ دھﺪ. ﭼﻮن ﻣﯽ ﺧﻮاھﻢ‬PHP ‫ﺑﺮای ﺷﺮوع ﺑﯿﺎﻳﯿﺪ اﺳﮑﺮﻳﭙﺖ‬ ‫ھﻤﻪ ﭼﯿﺰ ﺳﺎده ﺑﺎﺷﺪ، ﻣﺎ ﻓﻘﻂ ﻳﮏ آراﻳ ﻪ اﺻﻠﯽ ﺳﺎﺧﺘﻪ و از ﻳﮏ اﻟﮕﻮرﻳﺘﻢ ﺳﺎده اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ. ﮐﺪ زﻳﺮ را‬ :‫ اﺿﺎﻓﻪ ﮐﻨﯿﺪ‬search.php ‫ﺑﻪ ﻳﮏ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺑﺎ ﻧﺎم‬ <?php $results = array(); $links = ""; $results["http://www.cats.com"] = array("cat", "cats", "kitten", "kittens", "pet", "pets"); $results["http://www.google.com"] = array("search", "search engine", "google"); $results["http://www.mtv.com"] = array("music", "tv", "music charts"); if(isset($_POST["query"])) { $q = strtolower($_POST["query"]); $arrQueries = explode(" ", $q); foreach($arrQueries as $query) { foreach($results as $link=>$keywords) { foreach($keywords as $word) { if(strtolower($word) == $query) { if(!is_numeric(strpos($links, $link))) $links .= sprintf("%s,", $link); } } } } echo $links; } ?> ‫ ﺗﺎﻳﭗ‬textbox ‫ﻣﻦ ﻳﮏ آراﻳﻪ ﺳﺎﺧﺘﮕﯽ از ﻟﯿﻨﮏ ھﺎ و ﮐﻠﯿﺪ واژه ھﺎ ﺳﺎﺧﺘﻪ ام و ﺑﺴﺘﻪ ﺑﻪ اﻳﻨﮑ ﻪ ﭼﻪ ﮐﻠﻤﺎﺗﯽ در‬ .‫ﺷﺪه اﺳﺖ، ﻟﯿﻨﮏ ھﺎی ﻣﺮﺗﺒﻂ ﺑﺎزﮔﺸﺖ داده ﻣﯽ ﺷﻮﻧ ﺪ‬ :‫ زﻳﺮ را در آن ﮐﭙﯽ ﻧﻤﺎﻳﯿ ﺪ‬HTML ‫ ﺑﻨﺎﻣﯿﺪ و ﮐﺪ‬search.html ‫ ﻣﺎن را ﺑﺴﺎزﻳﻢ. آﻧﺮا‬HTML ‫ﺣﺎل ﺑﯿﺎﻳﯿﺪ ﻓﺎﻳ ﻞ‬ <html> <head> <style> .box { border: solid 1px black; width: 200px; height: 80px; background-color: lightyellow; padding: 10px; margin-top: 5px; display: none; } </style> <script> var url = "search.php"; var what = "ShowResults(req.responseText)"; function GetResults(Query) { DoCallback("query="+Query); } function ShowResults(Links) { var results = document.getElementById("results"); if(Links != "") { results.style.display = "block"; results.innerHTML = ""; arrLinks = Links.split(","); for(i = 0; i < arrLinks.length; i++) { if(arrLinks[i] != "") results.innerHTML = results.innerHTML + "<a href='" + arrLinks[i] + "'>" + arrLinks[i] + "</a><br>"; } } else { results.style.display = "none"; } } </script> <script src="ajax.js" type="text/javascript"></script> </head> <body> Search: <input id="query" type="text" onKeyUp="GetResults(document.getElementById('query').value)"> <div id="results" class="box"> </div> </body> </html> :‫ﺟﺴﺘﺠﻮ اﺳﺖ. ﭼﯿﺰی ﺷﺒﯿﻪ اﻳﻦ‬textbox ،‫ ﻣﺎ‬HTML ‫ﻣﮫﻤﺘﺮﻳﻦ ﺑﺨﺶ از ﮐﺪ‬ Search: <input id="query" type="text" onKeyUp="GetResults(document.getElementById('query').value)"> ‫ رخ داده ﺷﺪه اﺳﺖ ﮐ ﻪ ﺗﺎﺑﻊ ﺟﺎوا اﺳﮑﺮﻳﭙﺘﯽ‬onKeyUp ‫ ﺗﺎﻳﭗ ﺷﺪه اﺳﺖ، روﻳﺪاد‬textbox ‫وﻗﺘﯿﮑﻪ ﭼﯿﺰی در‬ .‫را ﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﮐﻨﺪ‬GetResults function GetResults(Query) { DoCallback("query="+Query); } ‫ ﮐﻪ ﻗﺒﻼ اﻳﺠﺎد ﮐﺮده ﺑﻮدﻳﻢ، ﻓﺮﺳﺘﺎده‬search.php ‫ ﺗﺎﻳﭗ ﺷﺪه ﺑﺎﺷﺪ، ﺑ ﻪ اﺳﮑﺮﻳﭙﺖ‬textbox ‫ھﺮ ﭼﯿﺰی ﮐﻪ در‬ ‫ از ھﻢ ﺗﻔﮑﯿﮏ ﺷﺪه اﺳﺖ، و ھﺮ ﮐﻠﻤﻪ ﺑﺮ روی ﻳﮏ ﻟﯿﺴﺖ‬space ‫ .ﺟﺴﺘﺠﻮ ﺗﻮﺳﻂ ﺗﻮﺳﻂ‬query ‫ﻣﯽ ﺷﻮد‬ .‫ﺳﺎﺧﺘﮕﯽ از ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ ﭼﮏ ﻣﯽ ﺷﻮد‬ $results["http://www.cats.com"] = array("cat", "cats", "kitten", "kittens", "pet", "pets"); $results["http://www.google.com"] = array("search", "search engine", "google"); $results["http://www.mtv.com"] = array("music", "tv", "music charts"); ‫ ﭘﺲ‬browser ‫ ﺟﺴﺘﺠﻮ ﻧﺘﯿﺠ ﻪ ای از ﮐﻠﻤﺎت ﻣﻮﺟﻮد در ﺮاﮐﺖ ھﺎ داﺷﺘﻪ ﺑﺎﺷﺪ، ﻟﯿﻨﮏ آن واژه ﺑﻪ‬query ‫اﮔﺮ‬ ‫ﻓﺮﺳﺘﺎده ﻣﯽ ﺷﻮد. وﻗﺘﯿﮑﻪ ھﻤ ﻪ ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮ ﭼﮏ ﺷﺪ، ﻟﯿﻨﮏ ھﺎ ﺑ ﻪ ﺷﮑﻞ ﻳﮏ ﺟﻌﺒﻪ ﻧﺘﺎﻳﺞ ﺟﺴﺘﺠﻮی زﻳﺒﺎ‬ .‫( اﻧﺠﺎم ﻣﯽ ﭘﺬﻳﺮد‬realtime) ‫ﻧﺸﺎن داده ﻣﯽ ﺷﻮﻧﺪ -- ﮐ ﻪ ھﻤﻪ اﻳﻦ ھﺎ ﺑﻪ ﺻﻮرت ﺑﻼدرﻧﮓ‬ ‫ﻧﺘﯿﺠﻪ ﮔﯿﺮی‬ ‫در اﻳﻦ ﻣﻘﺎﻟﻪ ﺑﻪ ﺷﻤﺎ 3 روش ﻋﻤﻠﯽ ﺑﺮای اﺳﺘﻔﺎده از ‪ Ajax‬ﺑﺮای ﺑﮫﺒﻮد ﺳﻮدﻣﻨﺪی وب ﺳﺎﻳﺘﺘﺎن ﻧﺸﺎن دادم.‬ ‫ﺑﻪ ﺧﺎﻃﺮ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐ ﻪ ﻣﺒﺎﺣﺜﯽ ﻧﻈﯿﺮ اﻣﻨﯿﺖ و ﺑﺎر ﺳﺮور، در ﺗﺼﻤﯿﻢ ﮔﯿﺮی درﺑﺎره اﻳﻨﮑﻪ ﮐﺠﺎ و ﭼﮕﻮﻧﻪ از‬ ‫اﺟﮑﺲ ﺑﺮ روی وب ﺳﺎﻳﺘﺘﺎن اﺳﺘﻔﺎده ﮐﻨﯿﺪ، ﻧﻘﺸﯽ ﻧﺪارﻧﺪ .‬ ‫اﮔﺮ ﻣﺎﻳﻠﯿﺪ ﺗﺎ ﺑﯿﺸﺘﺮ درﺑﺎره ‪ Ajax‬ﺑﺪاﻧﯿﺪ، ھﻤ ﻪ ﮐﺪ ھﺎی ﻣﺜﺎ ل ھﺎی ﮔﻔﺘ ﻪ ﺷﺪه در اﻳﻦ ﻣﻘﺎﻟﻪ را ﺑﻪ ﺻﻮرت‬ ‫ﮐﺎﻣﻞ ﻣﻄﺎﻟﻌﻪ ﮐﺮده و ﻟﯿﻨﮏ ھﺎی زﻳﺮ را ﻧﯿﺰ ﺑﺮرﺳﯽ ﻧﻤﺎﻳﯿﺪ:‬ ‫/‪http://dhtmlnirvana.com/ajax/ajax_tutorial‬‬ ‫‪http://www.sitepoint.com/article/remote-scripting-ajax‬‬ ‫92%‪http ://en.wikipedia.org/wiki/Ajax_%28programming‬‬ ‫ﻣﮭﺎرت در آﺟﺎﮐﺲ، ﻗﺴﻤﺖ اول: ﻣﻘﺪﻣﮫ ای ﺑﺮ آﺟﺎﮐﺲ‬ ‫ﻓﺮاﮔﯿﺮی ‪ ،Ajax‬روﺷﯽ ﻣﺆﺛﺮ ﺑﺮای اﯾﺠﺎد وب ﺳﺎﯾﺖ ھﺎ و ﭼﮕﻮﻧﮕﯽ ﮐﺎرﮐﺮد آن‬ ‫‪A jax‬ﮐﻪ ﺗﺮﮐﯿﺒﯽ از‪ ، HTML‬ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ، ‪DHTML‬و ‪ DOM‬اﺳﺖ، ﻳﮏ روش ﻋﺎﻟﯽ اﺳﺖ ﮐﻪ ﺑ ﻪ‬ ‫ﺷﻤﺎ ﮐﻤﮏ ﻣﯽ ﮐﻨﺪ ﺗﺎ ‪ UI‬ھﺎی ﺳﻨﮕﯿﻦ وب را ﺑ ﻪ ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ Ajax‬اﻳﻨﺘﺮﮐﺘﯿﻮ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﯿﺪ. ﻧﻮﻳﺴﻨﺪه در اﻳﻦ‬ ‫ﺳﺮی ﻣﻘﺎﻻت ﻧﺸﺎن ﻣﯽ دھﺪ ﮐﻪ ﭼﮕﻮﻧﻪ اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ھﺎ ﺑﺎ ھﻢ ﮐﺎر ﻣﯽ ﮐﻨﻨﺪ - از ﻣﻘﺪﻣﻪ ﺗﺎ ﻳﮏ ﻧﮕﺎه دﻗﯿﻖ -‬ ‫ﺗﺎ ﺗﻮﺳﻌﻪ وب ﺑﻪ ﺻﻮرت ﻣﺆﺛﺮ ﺑﻪ ﻳﮏ واﻗﻌﯿﺖ آﺳﺎن ﺗﺒﺪﻳ ﻞ ﺷﻮد. وی ھﻤﭽﻨﯿﻦ ﻣﻔﺎھﯿﻢ ﭘﺎﻳﻪ ‪ Ajax‬ﺷﺎﻣﻞ ﺷﺊ‬ ‫‪XMLHttpRequest‬را ﺗﺸﺮﻳﺢ ﻣﯽ ﮐﻨﺪ .‬ ‫ﭘﻨﺞ ﺳﺎل ﭘﯿﺶ اﮔﺮ ﭼﯿﺰی از ‪ XML‬ﻧﻤﯽ داﻧﺴﺘﯿﺪ، ﺷﻤﺎ ﻳﮏ ﺟﻮﺟﻪ اردک زﺷﺖ ﺑﻮدﻳﺪ ﮐﻪ ھﯿﭻ ﮐﺲ ﺣﺎﺿﺮ ﻧﺒﻮد‬ ‫ﺑﺎ ﺷﻤﺎ ﺻﺤﺒﺖ ﮐﻨﺪ. ھﺠﺪه ﻣﺎه ﭘﯿﺶ، زﻣﺎﻧﯿﮑﻪ ‪ Ruby‬ﺑﻪ ﺻﺤﻨﻪ آﻣﺪ، ھﯿ ﭻ ﮐﺲ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ را ﮐﻪ ﻧﻤﯽ‬ ‫داﻧﺴﺖ ﭼﻪ ﭼﯿﺰی ﺑ ﻪ ھﻤﺮاه ‪ Ruby‬آﻣﺪه اﺳﺖ، ﺗﺤﻮﻳﻞ ﻧﻤﯽ ﮔﺮﻓﺖ. اﻣﺮوزه اﮔﺮ ﻣﯽ ﺧﻮاھﯿﺪ وارد آﺧﺮﻳﻦ ﻣﻮج‬ ‫ﺗﮑﻨﻮﻟﻮژی ﺷﻮﻳﺪ، ‪Ajax‬ﺟﺎﻳﯽ ﺑﺮای اﻳﻦ ﮐﺎر اﺳﺖ .‬ ‫‪A jax‬ﺑﺴﯿﺎر ﻓﺮاﺗﺮ از ﻳﮏ ﻣﺪ زود ﮔﺬر اﺳﺖ؛ در واﻗﻊ ﻳﮏ روش ﻗﺪرﺗﻤﻨﺪ ﺑﺮای ﺳﺎﺧﺘﻦ وب ﺳﺎﻳﺖ ھﺎ اﺳﺖ ﮐﻪ‬ ‫ﻳﺎدﮔﯿﺮی آن ﺑ ﻪ ﻋﻨﻮان ﻳﮏ زﺑﺎن ﺟﺪﻳﺪ ﺧﯿﻠﯽ ﺳﺨﺖ ﻧﯿﺴﺖ .‬ ‫ﻗﺒﻞ از اﻳﻨﮑ ﻪ وارد اﻳﻦ ﺑﺤﺚ ﺷﻮم ﮐﻪ ‪ Ajax‬ﭼﯿﺴﺖ، ﺑﯿﺎﻳﯿﺪ ﭼﻨﺪ دﻗﯿﻘ ای ﺑﻪ اﻳﻦ ﻣﻮﺿﻮع ﺑﭙﺮدازﻳﻢ ﮐﻪ ‪ Ajax‬ﭼ ﻪ‬ ‫ﮐﺎری را اﻧﺠﺎم ﻣﯽ دھﺪ .اﻣﺮوزه ھﻨﮕﺎﻣﯿﮑﻪ ﻣﯽ ﺧﻮاھﯿﺪ ﻳﮏ ﺑﺮﻧﺎﻣ ﻪ ﺑﻨﻮﻳﺴﯿﺪ، ﺷﻤﺎ دو اﻧﺘﺨﺎب اﺻﻠﯽ دارﻳﺪ :‬ ‫‪o‬‬ ‫‪o‬‬ ‫ﺑﺮﻧﺎﻣﻪ ھﺎی ‪Desktop‬‬ ‫ﺑﺮﻧﺎﻣﻪ ھﺎی وب‬ ‫ھﺮ دو اﻳﻨﮫﺎ آﺷﻨﺎ ھﺴﺘﻨﺪ؛ ﺑﺮﻧﺎﻣ ﻪ ھﺎی ‪ desktop‬ﻣﻌﻤﻮﻻ ﺑﺮ روی ﻳﮏ( ‪ C D‬ﻳﺎ ﺑﻌﻀﯽ اوﻗﺎت ﻗﺎﺑ ﻞ داﻧﻠﻮد ﺷﺪن از‬ ‫وب ﺳﺎﻳﺖ( ھﺴﺘﻨﺪ و ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ ﺑﺮ روی ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﻤﺎ ﻧﺼﺐ ﻣﯽ ﺷﻮﻧﺪ. آﻧﮫﺎ ﻣﻤﮑﻦ اﺳﺖ ﺟﮫﺖ ﺑ ﻪ روز‬ ‫رﺳﺎﻧﯽ از اﻳﻨﺘﺮﻧﺖ ھﻢ اﺳﺘﻔﺎده ﮐﻨﻨﺪ اﻣﺎ ﮐﺪی ﮐ ﻪ ﺑﺮﻧﺎﻣ ﻪ را اﺟﺮا ﻣﯽ ﮐﻨﺪ ﺑﺮ روی ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﻤﺎ ﺑﺎﻗﯽ ﻣﯽ‬ ‫ﻣﺎﻧﺪ. ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب ﺟﺎﻳﯽ ﺑﺮ روی ﻳﮏ ﺳﺮور اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ و ﺷﻤﺎ ﺑﺎ اﺳﺘﻔﺎده از ‪ b rowser‬ﺗﺎن ﻣﯽ ﺗﻮاﻧﯿﺪ‬ ‫ﺑﻪ آﻧﮫﺎ دﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﯿﺪ .‬ ‫ﻣﮫﻢ ﺗﺮ از اﻳﻨﮑﻪ ﮐﺪ ﺑﺮﻧﺎﻣﻪ ﮐﺠﺎ اﺟﺮا ﻣﯽ ﺷﻮد، اﻳﻦ اﺳﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﭼﮕﻮﻧﻪ رﻓﺘﺎر ﻣﯽ ﮐﻨﺪ و ﺷﻤﺎ ﭼﻄﻮر ﻣﯽ‬ ‫ﺗﻮاﻧﯿﺪ ﺑﺎ آن ﮐﺎر ﮐﻨﯿﺪ .ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ desktop‬ﻣﻌﻤﻮﻻ ﺑﻪ ﺧﻮﺑﯽ ﺳﺮﻳﻊ ھﺴﺘﻨﺪ )آﻧﮫﺎ ﺑﺮ روی ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﻤﺎ اﺟﺮا‬ ‫ﻣﯽ ﺷﻮﻧﺪ و ﺑﺮای اﺗﺼﺎل ﺑﻪ اﻳﻨﺘﺮﻧﺖ ﻧﯿﺎزی ﺑ ﻪ ﺻﺒﺮ ﮐﺮدن ﻧﯿﺴﺖ(، راﺑﻂ ﮐﺎرﺑﺮی )‪ (UI‬ﻗﻮی دارﻧﺪ( ﻣﻌﻤﻮﻻ ﺑﺎ‬ ‫ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ در ارﺗﺒﺎﻃﻨﺪ( و ﺑﻪ ﻃﻮر ﺑﺎور ﻧﮑﺮدﻧﯽ داﻳﻨﺎﻣﯿﮏ ھﺴﺘﻨﺪ. ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺻﺒﺮ ﮐﺮدن‬ ‫ﮐﻠﯿﮏ ﮐﻨﯿﺪ، ﺑﺎ ﻣﻮس اﺷﺎره ﮐﻨﯿﺪ، ﺗﺎﻳﭗ ﮐﻨﯿﺪ و ...‬ ‫در ﻋﻮض ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﻣﻌﻤﻮﻻ در ھﺮ ﻟﺤﻈﻪ ﺑﻪ روز ھﺴﺘﻨﺪ و ﺳﺮوﻳﺲ ھﺎﻳﯽ را اراﺋ ﻪ ﻣﯽ دھﻨﺪ ﮐﻪ ھﺮﮔﺰ‬ ‫ﻧﻤﯽ ﺗﻮاﻧﯿﺪ ﺑﺮ روی ‪ desktop‬ﺗﺎن داﺷﺘ ﻪ ﺑﺎﺷﯿﺪ ‪ (Amazon.com‬و ‪ eBay‬را ﺗﺼﻮر ﮐﻨﯿﺪ(. اﻣﺎ ﺑ ﻪ ھﻤﺮاه ﺗﻮاﻧﺎﻳﯽ‬ ‫ھﺎی وب، اﻧﺘﻈﺎر ﻧﯿﺰ آﻣﺪه اﺳﺖ - اﻧﺘﻈﺎر ﺑﺮای ﭘﺎﺳ ﺦ ﺳﺮور، اﻧﺘﻈﺎر ﺑﺮای ‪ refresh‬ﺷﺪن ﺻﻔﺤﻪ، اﻧﺘﻈﺎر ﺑﺮای‬ ‫اﻳﻨﮑ ﻪ ﻳﮏ درﺧﻮاﺳﺖ ﻓﺮﺳﺘﺎده ﺷﻮد و ﺻﻔﺤ ﻪ ﺟﺪﻳﺪی ﺗﻮﻟﯿﺪ ﺷﻮد .‬ ‫ﺑﺪﻳﮫﯽ اﺳﺖ ﮐ ﻪ ﺗﺎ ﺣﺪودی زﻳﺎدی ﺳﺎده ﺳﺎزی ﺷﺪه اﺳﺖ اﻣﺎ ﺷﻤﺎ ﻧﮑﺘ ﻪ اﺻﻠﯽ را ﺑﮕﯿﺮﻳﺪ. ھﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ‬ ‫ﻣﻤﮑﻦ اﺳﺖ ﺣﺪس زده ﺑﺎﺷﯿﺪ، ‪Ajax‬ﺳﻌﯽ دارد ﺗﺎ ﭘﻠﯽ ﻣﯿﺎن ﻓﺎﺻﻠﻪ ﻣﻮﺟﻮد ﺑﯿﻦ ﻋﻤﻠﯿﺎﺗﯽ و اﻳﻨﺘﺮﮐﺘﯿﻮ ﺑﻮدن ﻳﮏ‬ ‫ﺑﺮﻧﺎﻣﻪ ‪ desktop‬و ھﻤﯿﺸﻪ ﺑﻪ روز ﺑﻮدن ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﺑﺎﺷﺪ. ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ از ‪ UI‬ھﺎی داﻳﻨﺎﻣﯿﮏ و ﮐﻨﺘﺮل‬ ‫ھﺎی زﻳﺒﺎ ﺷﺒﯿﻪ آﻧﭽﻪ در ﻳﮏ ﺑﺮﻧﺎﻣﻪ ‪ desktop‬ﻣﯽ ﺑﯿﻨﯿﺪ، در ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب اﺳﺘﻔﺎده ﮐﻨﯿﺪ .‬ ‫ﺧﻮب، ﻣﻨﺘﻈﺮ ﭼ ﻪ ھﺴﺘﯿﺪ؟ ﺑﻪ ‪ Ajax‬ﻧﮕﺎه ﮐﻨﯿﺪ و ﺑﺒﯿﻨﯿﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ‪ UI‬ھﺎی ﺳﻨﮕﯿﻦ ﺷﻤﺎ را ﺑﻪ ﺑﺮﻧﺎﻣﻪ ھﺎی‬ ‫ﭘﺎﺳﺨﯽ ‪ Ajax‬ﺗﺒﺪﻳﻞ ﻣﯽ ﮐﻨﺪ .‬ ‫ﺗﮑﻨﻮﻟﻮژی ﻗﺪﯾﻢ، ﻣﮭﺎرت ﺟﺪﯾﺪ‬ ‫واﻗﻌﯿﺖ اﻳﻦ اﺳﺖ ﮐ ﻪ ﺑﻪ ھﻤﺮاه ‪ Ajax‬ﺗﮑﻨﻮﻟﻮژی ھﺎی ﻣﺘﻌﺪدی ھﻢ آﻣﺪه اﺳﺖ - ﺑﺮای اﻳﻨﮑ ﻪ از ﻣﺒﺎﻧﯽ ﭘﺎﻳ ﻪ ﻓﺮاﺗﺮ‬ ‫ﺑﺮوﻳﺪ، ﻧﯿﺎز دارﻳﺪ ﮐ ﻪ وارد ﺟﺰﺋﯿﺎت ﺗﮑﻨﻮﻟﻮژی ھﺎی ﻣﺨﺘﻠﻒ ﺷﻮﻳﺪ )و اﻳﻦ دﻟﯿﻠﯽ اﺳﺖ ﮐﻪ ﻣﻦ ﭼﻨﺪ ﻣﻘﺎﻟﻪ اول ﺧﻮد‬ ‫را ﺑﻪ ﺗﻔﮑﯿﮏ درﺑﺎره ھﺮﮐﺪام از آﻧﮫﺎ ﻧﻮﺷﺘﻪ ام(. ﺧﺒﺮ ﺧﻮش اﻳﻦ اﺳﺖ ﮐﻪ ﺷﻤﺎ ﻣﻤﮑﻦ اﺳﺖ در ﺣﺪ ﻣﻨﺎﺳﺒﯽ ﺑﺎ‬ ‫ﺑﻌﻀﯽ از اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ھﺎ آﺷﻨﺎ ﺑﺎﺷﯿﺪ و از اﻳﻦ ﺑﮫﺘﺮ اﻳﻨﮑﻪ ﻳﺎدﮔﯿﺮی ﺑﯿﺸﺘﺮ اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ھﺎ آﺳﺎن اﺳﺖ. ﻗﻄﻌﺎ‬ ‫ﺑﻪ ﺳﺨﺘﯽ ﻳﮏ زﺑﺎن ﮐﺎﻣﻞ ﻧﻈﯿﺮ ‪ Java‬ﻳﺎ ‪ Ruby‬ﻧﯿﺴﺖ.‬ ‫ﺗﮑﻨﻮﻟﻮژی ھﺎی ﭘﺎﻳ ﻪ ﻣﻮﺟﻮد در ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ Ajax‬ﻋﺒﺎرﺗﻨﺪ از:‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫‪HTML‬ﮐ ﻪ ﺑﻪ ﻣﻨﻈﻮر ﺳﺎﺧﺘﻦ ﻓﺮم ھﺎی وب و ﺷﻨﺎﺳﺎﻳﯽ ﻓﯿﻠﺪ ھﺎی ﻣﻮرد اﺳﺘﻔﺎده در ﺑﺮﻧﺎﻣ ﻪ اﺳﺘﻔﺎده‬ ‫ﺷﺪه اﺳﺖ .‬ ‫ﮐﺪھﺎی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﮐ ﻪ ﮐﺪھﺎی ھﺴﺘﻪ اﺟﺮاﻳﯽ ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ A jax‬ھﺴﺘﻨﺪ و در ﺗﺴﮫﯿﻞ ﺑﺮﻗﺮاری‬ ‫ارﺗﺒﺎ ط ﺑﺎ ﺑﺮﻧﺎﻣ ﻪ ھﺎی ﺳﻤﺖ ﺳﺮور ﮐﻤﮏ ﻣﯽ ﮐﻨﻨﺪ .‬ ‫‪DHTML‬ﻳﺎ ‪ HTML‬داﻳﻨﺎﻣﯿﮏ ﺑ ﻪ ﺷﻤﺎ ﮐﻤﮏ ﻣﯽ ﮐﻨﺪ ﺗﺎ ﺑ ﻪ ﺻﻮرت داﻳﻨﺎﻣﯿﮏ ﻓﺮم ھﺎﻳﺘﺎن را ‪update‬‬ ‫ﻧﻤﺎﻳﯿﺪ. ﺷﻤﺎ از‪span ، div‬و ﺳﺎﻳﺮ اﻟﻤﺎﻧﮫﺎی ‪ HTML‬داﻳﻨﺎﻣﯿﮏ ﺑ ﻪ ﻣﻨﻈﻮر ﻋﻼﻣﺖ ﮔﺬاری ﺳﻨﺪ ‪HTML‬‬ ‫ﺗﺎن اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﺪ .‬ ‫‪DOM‬ﻳﺎ( ‪ Document Object Model‬از ﻃﺮﻳﻖ ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ( ﺑﻪ ﻣﻨﻈﻮر ﮐﺎر ﺑﺎ ﺳﺎﺧﺘﺎر ‪HTML‬‬ ‫ﺷﻤﺎ و )در ﺑﻌﻀﯽ ﻣﻮارد ‪) XML‬ﺑﺮﮔﺸﺘﯽ از ﺳﻤﺖ ﺳﺮور ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد .‬ ‫ﺑﯿﺎﻳﯿﺪ اﻳﻨﮫﺎ را ﺗﻘﺴﯿﻢ ﺑﻨﺪی ﮐﻨﯿﻢ و ﺑﺒﯿﻨﯿﻢ ھﺮﮐﺪام ﭼ ﻪ ﮐﺎر ﻣﯽ ﮐﻨﻨﺪ. ﻣﻦ در ﻣﻘﺎﻻت ﺑﻌﺪی ﺧﻮد، ھﺮﮐﺪام از آﻧﮫﺎ‬ ‫را ﺗﺸﺮﻳﺢ ﺧﻮاھﻢ ﮐﺮد؛ اﮐﻨﻮن ﺑﺮ روی آﺷﻨﺎﻳﯽ ﺑﺎ اﻳﻦ ﮐﺎﻣﭙﻮﻧﻨﺖ ھﺎ و ﺗﮑﻨﻮﻟﻮژی ھﺎ ﺗﻤﺮﮐﺰ ﻣﯽ ﮐﻨﯿﻢ . ھﺮ ﻗﺪر‬ ‫ﺷﻤﺎ ﺑﺎ اﻳﻦ ﮐﺪ ﺑﯿﺸﺘﺮ آﺷﻨﺎ ﺷﻮﻳﺪ، ﺣﺮﮐﺖ از داﻧﺶ ﻣﻮﻗﺘﯽ درﺑﺎره اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ھﺎ ﺑﻪ ﺳﻮی ﺣﺮﻓﻪ ای ﺷﺪن‬ ‫در ھﺮ ﮐﺪام از آﻧﮫﺎ آﺳﺎن ﺗﺮ ﺧﻮاھﺪ ﺑﻮد.‬ ‫ﺷﯿﺊ‪XMLHttpRequest‬‬ ‫اوﻟﯿﻦ ﺷﯿﺌﯽ ﮐ ﻪ ﻗﺮار اﺳﺖ ﻳﺎد ﺑﮕﯿﺮﻳ ﺪ اﺣﺘﻤﺎﻻ ﺟﺪﻳﺪ ﺗﺮﻳﻦ آﻧﮫﺎﺳﺖ؛ ﮐﻪ ‪ XMLHttpRequest‬ﻧﺎﻣﯿﺪه ﻣﯽ‬ ‫ﺷﻮد. اﻳﻦ ﺷﯿﺊ ﻳ ﮏ آﺑﺠﮑﺖ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ اﺳﺖ ﮐﻪ ﺑ ﻪ ھﻤﺎن ﺳﺎدﮔﯽ ﮐﻪ در ﻟﯿﺴﺖ زﻳﺮ ﻧﺸﺎن داده ﺷﺪه‬ ‫اﺳﺖ، اﻳﺠﺎد ﻣﯽ ﺷﻮد:‬ ‫ﻟﯿﺴﺖ 1 - اﯾﺠﺎد ﯾﮏ ﺷﯿﺊ ﺟﺪﯾﺪ ‪XMLHttpRequest‬‬ ‫>"‪<script language="JavaScript" type="text/JavaScript‬‬ ‫;)(‪var xmlHttp = new XMLHttpRequest‬‬ ‫>‪</script‬‬ ‫ﻣﻦ در ﻣﻘﺎﻟ ﻪ ﺑﻌﺪی ﺧﻮدم درﺑﺎره اﻳﻦ ﺷﯿﺊ ﺑﯿﺸﺘﺮ ﺗﻮﺿﯿﺢ ﺧﻮاھﻢ داد، اﻣﺎ ﺑﺮای اﮐﻨﻮن ﺗﻮﺟ ﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ‬ ‫اﻳﻦ آﺑﺠﮑﺘﯽ اﺳﺖ ﮐﻪ ھﻤﻪ ارﺗﺒﺎﻃﺎت ﺳﻤﺖ ﺳﺮور ﺷﻤﺎ را ﻣﺪﻳﺮﻳﺖ ﻣﯽ ﮐﻨﺪ. ﻗﺒﻞ از اﻳﻨﮑﻪ اداﻣ ﻪ دھﯿﺪ، ﻣﮑﺚ‬ ‫ﮐﺮده و درﺑﺎره آن ﻓﮑﺮ ﮐﻨﯿﺪ. اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ اﺳﺖ ﮐﻪ از ﻃﺮﻳﻖ ﺷﯿﺊ ‪ XMLHttpRequest‬ﺑﺎ‬ ‫ﺳﺮور ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﯽ ﻧﻤﺎﻳﺪ. ﭼﻨﯿﻦ ﭼﯿﺰ ی ﺟﺰء ﺟﺮﻳﺎن ﻣﻌﻤﻮل ﺑﺮﻧﺎﻣﻪ ﻧﯿﺴﺖ و ﺟﺎﻳﯽ اﺳﺖ ﮐﻪ ‪ A jax‬ﺟﺎدوی‬ ‫ﺧﻮد را ﺑﯿﺸﺘﺮ ﻧﻤﺎﻳﺎن ﻣﯽ ﮐﻨﺪ.‬ ‫در ﻳﮏ ﺑﺮﻧﺎﻣﻪ ﻣﻌﻤﻮﻟﯽ وب، ﮐﺎرﺑﺮان ﻓﯿﻠ ﺪ ھﺎی ﻓﺮم را ﭘﺮ ﮐﺮده و ﺑﺮ روی دﮐﻤﻪ ارﺳﺎل ﮐﻠﯿﮏ ﻣﯽ ﮐﻨﻨﺪ. ﺳﭙﺲ‬ ‫ﮐ ﻞ ﻓﺮم ﺑﻪ ﺳﺮور ﻓﺮﺳﺘﺎده ﻣﯽ ﺷﻮد، ﺳﺮور اﺳﮑﺮﻳﭙﺘﯽ را ﭘﺮدازش ﻣﯽ ﮐﻨﺪ )ﻣﻌﻤﻮﻻ ‪ PHP‬ﻳﺎ ‪ Java‬ﻳﺎ ﺷﺎﻳﺪ ﻳﮏ‬ ‫ﭘﺮوﺳﻪ ‪ CGI‬ﻳﺎ ﮐﺎرھﺎی ﻣﺸﺎﺑ ﻪ(، و زﻣﺎﻧﯿﮑ ﻪ اﺳﮑﺮﻳﭙﺖ اﺟﺮا ﺷﺪ، ﺳﺮور ﻳﮏ ﺻﻔﺤﻪ ﮐﺎﻣﻼ ﺟﺪﻳﺪ را ﭘﺲ ﻣﯽ‬ ‫ﻓﺮﺳﺘﺪ. آن ﺻﻔﺤﻪ ﻣﯽ ﺗﻮاﻧﺪ ‪ H TML‬ﺑﺎ ﻳﮏ ﻓﺮم ﺑ ﻪ ھﻤﺮاه داده ھﺎی ﭘﺮﺷﺪه ﻳﺎ ﻳﮏ ﺗﺎﻳﯿﺪ ﻳﺎ ﺷﺎﻳﺪ ﺻﻔﺤﻪ ای ﺑﺎ‬ ‫ﮔﺰﻳﻨ ﻪ ھﺎی اﻧﺘﺨﺎب ﺷﺪه ﺑﺮ اﺳﺎس داده ھﺎی ارﺳﺎل ﺷﺪه در ﻓﺮم اﺻﻠﯽ ﺑﺎﺷﺪ. اﻟﺒﺘﻪ زﻣﺎﻧﯿﮑﻪ اﺳﮑﺮﻳﭙﺖ ﻳﺎ‬ ‫ﺑﺮﻧﺎﻣﻪ در ﺳﻤﺖ ﺳﺮور در ﺣﺎ ل ﭘﺮدازش و ﻓﺮﺳﺘﺎدن ﻓﺮم ﺟﺪﻳﺪ اﺳﺖ، ﮐﺎرﺑﺮان ﻣﺠﺒﻮرﻧﺪ ﺻﺒﺮ ﻧﻤﺎﻳﻨﺪ. ﺻﻔﺤ ﻪ‬ ‫ﻧﻤﺎﻳﺶ ﺧﺎﻟﯽ ﻣﯽ ﺷﻮد و زﻣﺎﻧﯿﮑﻪ داده ھﺎ از ﺳﻤﺖ ﺳﺮور ﺑﺮﮔﺸﺖ داده ﺷﺪﻧﺪ، ﺻﻔﺤﻪ دوﺑﺎره ﺗﺮﺳﯿﻢ ﻣﯽ‬ ‫ﺷﻮد. اﻳﻦ ھﻤﺎن ﺟﺎﻳﯽ اﺳﺖ ﮐﻪ ﺗﻌﺎﻣﻞ ﭘﺎﻳﯿﻦ ﻧﻤﻮد ﭘﯿﺪا ﻣﯽ ﮐﻨﺪ --ﮐﺎرﺑﺮان ﺑﺎزﺧﻮرد ﻓﻮری درﻳﺎﻓﺖ ﻧﻤﯽ ﮐﻨﻨﺪ و‬ ‫ﺑﺪون ﺷﮏ ھﻤﺎﻧﻨﺪ ﮐﺎر ﺑﺎ ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ desktop‬راﺣﺖ ﻧﻤﯽ ﺑﺎﺷﻨﺪ.‬ ‫‪A jax‬ذاﺗﺎ ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ و ﺷﯿﺊ ‪ XMLHttpRequest‬را ﻣﺎ ﺑﯿﻦ ﻓﺮم ھﺎی وب ﺷﻤﺎ و ﺳﺮور ﻗﺮار‬ ‫ﻣﯽ دھﺪ. ھﻨﮕﺎﻣﯽ ﮐﻪ ﮐﺎرﺑﺮان ﻓﺮم ھﺎ را ﭘﺮ ﻣﯽ ﮐﻨﻨﺪ، آن داده ھﺎ ﻣﺴﺘﻘﯿﻤﺎ ﺑﻪ ﺳﺮور ﻓﺮﺳﺘﺎده ﻧﻤﯽ ﺷﻮﻧﺪ‬ ‫ﺑﻠﮑﻪ ﺑ ﻪ ﮐﺪھﺎی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﻓﺮﺳﺘﺎده ﻣﯽ ﺷﻮﻧﺪ. در ﻋﻮض ﮐﺪھﺎی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ داده ھﺎی ﻓﺮم را ﮔﺮﻓﺘ ﻪ‬ ‫و ﻳﮏ درﺧﻮاﺳﺖ ﺑ ﻪ ﺳﺮور ارﺳﺎ ل ﻣﯽ ﮐﻨﻨﺪ. وﻗﺘﯽ ﭼﻨﯿﻦ ﭼﯿﺰی اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ، دﻳﮕﺮ ﻓﺮم ﻧﻤﺎﻳﺶ داده ﺷﺪه‬ ‫ﺑﻪ ﮐﺎرﺑﺮ، رﻓﺖ و ﺑﺮﮔﺸﺖ ﻧﺪرد و ﭘﻨﮫﺎن و ﭘﯿﺪا ﻧﻤﯽ ﺷﻮد. ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ، ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ درﺧﻮاﺳﺖ را در‬ ‫ﭘﺲ زﻣﯿﻨ ﻪ ارﺳﺎل ﻣﯽ ﮐﻨﺪ؛ ﮐﺎرﺑﺮ ﺣﺘﯽ ﻣﺘﻮﺟﻪ ﻧﻤﯽ ﺷﻮد ﮐﻪ ارﺳﺎل درﺧﻮاﺳﺖ ﺷﺮوع ﺷﺪه اﺳﺖ. ﺑﻪ‬ ‫ﻋﺒﺎرﺗﯽ ﺑﮫﺘﺮ، درﺧﻮاﺳﺖ ﺑﻪ ﺻﻮرت ﻏﯿﺮ ھﻤﺰﻣﺎن )‪ (Asynchronously‬ارﺳﺎل ﺷﺪه اﺳﺖ، ﺑﻪ اﻳﻦ ﻣﻌﻨﯽ ﮐﻪ ﮐﺪ‬ ‫ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺷﻤﺎ )و ﮐﺎرﺑﺮ )ﻣﻨﺘﻈﺮ ﭘﺎﺳﺦ ﺳﺮور ﻧﻤﯽ ﻣﺎﻧﻨﺪ. ﺑﻨﺎﺑﺮاﻳﻦ ﮐﺎرﺑﺮان ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ اداﻣ ﻪ ورود‬ ‫اﻃﻼﻋﺎت، ﻣﺮور ﺻﻔﺤﻪ و اﺳﺘﻔﺎده از ﺑﺮﻧﺎﻣ ﻪ ﺑﭙﺮدازﻧﺪ.‬ ‫ﺳﭙﺲ ﺳﺮور داده ھﺎﻳﯽ را ﺑﻪ ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺷﻤﺎ )ﮐﻪ ھﻤﭽﻨﺎن ﺟﺎﻧﺸﯿﻦ وب ﻓﺮم اﺳﺖ( ﭘﺲ ﻣﯽ‬ ‫ﻓﺮﺳﺘﺪ. ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺗﺼﻤﯿﻢ ﻣﯽ ﮔﯿﺮد ﮐﻪ ﺑﺎ آن داده ھﺎ ﭼ ﻪ ﮐﻨﺪ. ﻣﯽ ﺗﻮاﻧﺪ ﻓﯿﻠﺪھﺎی ﻓﺮم را ھﻤﺎن ﻣﻮﻗﻊ‬ ‫‪ update‬ﮐﻨﺪ، ﮐﻪ ﺑﻪ ﺑﺮﻧﺎﻣ ﻪ ﺷﻤﺎ اﺣﺴﺎس آﻧﯽ ﺑﻮدن ﻣﯽ دھﺪ --ﮐﺎرﺑﺮان ﺑﺪون اﻳﻨﮑﻪ ﻓﺮﻣﺸﺎن را ارﺳﺎ ل ﻳﺎ‬ ‫‪ refresh‬ﮐﺮده ﺑﺎﺷﻨﺪ، داده ھﺎی ﺟﺪﻳﺪی درﻳﺎﻓﺖ ﻣﯽ ﮐﻨﻨﺪ. ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺣﺘﯽ ﻣﯽ ﺗﻮاﻧﺪ داده ھﺎ را‬ ‫درﻳﺎﻓﺖ ﮐﺮده، ﻣﺤﺎﺳﺒﺎﺗﯽ ﺑﺮ روی آن اﻧﺠﺎم داده و درﺧﻮاﺳﺖ دﻳﮕﺮ ی را ارﺳﺎل ﮐﻨﺪ، و ھﻤ ﻪ اﻳﻨﮫﺎ ﺑﺪون دﺧﺎﻟﺖ‬ ‫ﮐﺎرﺑﺮ اﺳﺖ. ﭼﻨﯿﻦ ﭼﯿﺰی ﻗﺪرت ‪ XMLHttpRequest‬اﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ ھﺮ آﻧﭽﻪ را ﮐ ﻪ ﻣﯽ ﺧﻮاھﺪ در ﺳﻤﺖ‬ ‫ﺳﺮور ﻳﺎ ﮐﻼﻳﻨﺖ، ﺑﺎ ﺳﺮور ﻣﺒﺎدﻟﻪ ﻧﻤﺎﻳﺪ، ﺣﺘﯽ ﺑﺪون آﻧﮑ ﻪ ﮐﺎرﺑﺮ از اﺗﻔﺎﻗﺎﺗﯽ ﮐ ﻪ درﺣﺎ ل اﻧﺠﺎم اﺳﺖ ﺑﺎﺧﺒﺮ ﺷﻮد.‬ ‫ﻧﺘﯿﺠﻪ، ﺗﺠﺮﺑﻪ ای دﻳﻨﺎﻣﯿﮏ، ﭘﺎﺳﺨﮕﻮ، ﺑﺎ ﺗﻌﺎﻣﻞ ﺑﺎﻻ، ﺷﺒﯿﻪ ﻳﮏ ﺑﺮﻧﺎﻣ ﻪ ‪ desktop‬اﺳﺖ، اﻣﺎ ھﻤﻪ ﺑﺎ ﻧﯿﺮوی‬ ‫اﻳﻨﺘﺮﻧﺖ ﭘﺸﺖ آن.‬ ‫اﻓﺰودن ﭼﻨﺪ ﺧﻂ ﺟﺎوا اﺳﮑﺮﯾﭙﺖ‬ ‫زﻣﺎﻧﯿﮑ ﻪ ﺷﻤﺎ ‪ XMLHttpRequest‬را ﺑﻪ ﮐﺎر ﻣﯽ ﺑﺮﻳﺪ، ﺑﺎﻗﯽ ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺷﻤﺎ ﺧﯿﻠﯽ ﭘﯿﺶ ﭘﺎ اﻓﺘﺎده‬ ‫ﻣﯽ ﺷﻮد. در واﻗﻊ، ﺷﻤﺎ ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ را ﺗﻨﮫﺎ ﺑﺮای ﮐﺎرھﺎی اﺳﺎﺳﯽ زﻳﺮ اﺳﺘﻔﺎده ﺧﻮاھﯿﺪ ﮐﺮد:‬ ‫•‬ ‫•‬ ‫•‬ ‫درﻳﺎﻓﺖ داده ھﺎی ﻓﺮم: ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ، ﺑﯿﺮون ﮐﺸﯿﺪن داده ھﺎ از ﻓﺮم ‪ HTML‬ﺷﻤﺎ و ﻓﺮﺳﺘﺎدن‬ ‫آﻧﮫﺎ ﺑﻪ ﺳﺮور را آﺳﺎن ﻣﯽ ﻧﻤﺎﻳﺪ .‬ ‫ﺗﻐﯿﯿﺮ ﻣﻘﺎدﻳﺮ ﺑﺮ روی ﻓﺮم: ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ھﻤﭽﻨﯿﻦ ﺑ ﻪ روز رﺳﺎﻧﯽ ﻳﮏ ﻓﺮم، از ﺳﺖ ﮐﺮدن ﻣﻘﺎدﻳﺮ‬ ‫ﻓﯿﻠﺪھﺎ ﺗﺎ ﺟﺎﻳﮕﺰﻳﻦ ﮐﺮدن ﺗﺼﺎوﻳﺮ را آﺳﺎن ﻣﯽ ﻧﻤﺎﻳﺪ .‬ ‫ﺗﺠﺰﻳﻪ )‪ (Parse‬ﮐﺮدن ‪ HTML‬و :‪ XML‬ﺷﻤﺎ از ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺑﻪ ﻣﻨﻈﻮر دﺳﺘﮑﺎری( ‪ DOM‬ﺑﺨﺶ‬ ‫ﺑﻌﺪ را ﺑﺒﯿﻨﯿﺪ( و ﮐﺎر ﺑﺎ ﺳﺎﺧﺘﺎر ﻓﺮم ‪ HTML‬و ھﺮ داده‪ XML‬ی ﮐﻪ ﺳﺮور ﺑﺎزﮔﺸﺖ ﻣﯽ دھﺪ، اﺳﺘﻔﺎده‬ ‫ﺧﻮاھﯿﺪ ﮐﺮد .‬ ‫ﺑﺮای دو ﻣﻮرد اول، ﺷﻤﺎ ﺑﺎﻳﺪ ﺑ ﻪ ﺧﻮﺑﯽ ﺑﺎ ﻣﺘﺪ)(‪ ، getElementById‬آﻧﭽﻨﺎن ﮐﻪ در ﻟﯿﺴﺖ 2 ﻧﺸﺎن داده‬ ‫ﺷﺪه اﺳﺖ، آﺷﻨﺎ ﺑﺎﺷﯿﺪ.‬ ‫ﻟﯿﺴ ﺖ 2. ﮔﺮﻓﺘﻦ و ﺳ ﺖ ﮐﺮدن ﻣﻘﺎدﻳﺮ ﻓﯿﻠﺪ ﺑﺎ اﺳﺘﻔﺎده از ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙ ﺖ‬ ‫‪// Get the value of the "phone" field and stuff it in a variable called phone‬‬ ‫;‪var phone = document.getElementById("phone").value‬‬ ‫‪// Set some values on a form using an array called response‬‬ ‫;]0[‪document.getElementById("order").value = response‬‬ ‫;]1[‪document.getElementById("address").value = response‬‬ ‫ﻋﻤﻼ در اﻳﻨﺠﺎ ھﯿﭻ ﭼﯿﺰ ﻗﺎﺑﻞ ﺗﻮﺟﮫﯽ وﺟﻮد ﻧﺪارد و اﻳﻦ ﺧﻮب اﺳﺖ! ﺷﻤﺎ ﺑﺎﻳﺪ درک ﮐﻨﺪ ﮐﻪ ھﯿ ﭻ ﭼﯿﺰ ﭘﯿﭽﯿﺪه و‬ ‫ﺗﺮﺳﻨﺎﮐﯽ درﺑﺎره اﻳﻦ وﺟﻮد ﻧﺪارد. زﻣﺎﻧﯿﮑﻪ ﺷﻤﺎ ‪ XMLHttpRequest‬را ﺧﻮب ﻳﺎد ﮔﺮﻓﺘﯿﺪ، ﺑﻘﯿﻪ ﺑﺮﻧﺎﻣﻪ ‪Ajax‬‬ ‫ﺷﻤﺎ ﮐﺪھﺎی ﺳﺎده ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺷﺒﯿﻪ آﻧﭽ ﻪ در ﻟﯿﺴﺖ 2 ﻧﺸﺎن داده ﺷﺪه ﺧﻮاھﺪ ﺑﻮد، ﮐ ﻪ ﺑﺎ ﮐﻤﯽ‪، HTML‬‬ ‫ھﻮﺷﻤﻨﺪاﻧ ﻪ ﻣﺨﻠﻮط ﺷﺪه اﺳﺖ. ﭘﺲ ﺑﻌﻀﯽ اوﻗﺎت ﮐﻤﯽ ‪ DOM‬ﻣﺆﺛﺮ واﻗﻊ ﻣﯽ ﺷﻮد... ﺑﯿﺎﻳﯿﺪ ﻧﮕﺎھﯽ ﺑﻪ آن‬ ‫ﺑﯿﺎﻧﺪازﻳﻢ .‬ ‫ﻧﺎزک ﮐﺎری ﺑ ﺎ ‪DOM‬‬ ‫آﺧﺮﻳﻦ ﻣﻮرد از ﻟﺤﺎظ ﺗﺮﺗﯿﺐ، ‪DOM‬ﻳﺎ ‪ Document Object Model‬اﺳﺖ. ﺑﺮای ﺑﻌﻀﯽ از ﺷﻤﺎ، ‪DOM‬ﮐﻤﯽ‬ ‫ﺗﺮﺳﻨﺎک ﺑﻪ ﻧﻈﺮ ﻣﯽ آﻳﺪ -- اﻏﻠﺐ ﺗﻮﺳﻂ ﻃﺮاﺣﺎن ‪ HTML‬اﺳﺘﻔﺎده ﻧﻤﯽ ﺷﻮد و ﺣﺘﯽ ﺑﺮای ﮐﺪ ﻧﻮﻳﺴﺎن ﺟﺎوا‬ ‫اﺳﮑﺮﻳﭙﺖ ﮐﻤﯽ ﻏﯿﺮ ﻣﻌﻤﻮل اﺳﺖ، ﻣﮕﺮ اﻳﻨﮑﻪ ﺷﻤﺎ وارد ﻣﻮارد ﺣﺮﻓ ﻪ ای ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺷﺪه ﺑﺎﺷﯿﺪ. ﺟﺎﻳﯽ ﮐﻪ‬ ‫ﺷﻤﺎ ‪ DOM‬را در ﺑﺮﻧﺎﻣﻪ ھﺎی ﺳﻨﮕﯿﻦ ‪ Java‬و ++‪ C /C‬ﺧﻮاھﯿﺪ ﻳﺎﻓﺖ، در ﺣﻘﯿﻘﺖ ھﻤﺎن ﺟﺎﻳﯽ اﺳﺖ ﮐﻪ ‪DOM‬‬ ‫در ﺳﺨﺘﯽ و ﻣﺸﮑﻞ ﺑﻮدن ﻳﺎدﮔﯿﺮی ﮐﻤﯽ ﺷﮫﺮت ﭘﯿﺪا ﮐﺮده اﺳﺖ .‬ ‫ﺧﻮﺷﺒﺨﺘﺎﻧ ﻪ اﺳﺘﻔﺎده از ‪ DOM‬در ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺳﺎده و ﺑﯿﺸﺘﺮ ﻗﺎﺑﻞ درک اﺳﺖ. ﻣﻦ ﺑﻪ ﺷﻤﺎ ﻧﺸﺎن‬ ‫ﺧﻮاھﻢ داد ﮐ ﻪ ﭼﮕﻮﻧ ﻪ از ‪ DOM‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ ﻳﺎ ﺣﺪاﻗﻞ ﭼﻨﺪ ﻧﻤﻮﻧ ﻪ ﮐﺪ ﺑ ﻪ ﺷﻤﺎ اراﺋﻪ ﺧﻮاھﻢ ﮐﺮد، ﺣﺘﯽ اﮔﺮ ﺑﻪ‬ ‫ﻧﻈﺮ ﮔﻤﺮاه ﮐﻨﻨﺪه آﻳﺪ. ﺧﻮاھﯿﺪ ﻓﮫﻤﯿﺪ ﮐ ﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺪون اﻳﻨﮑﻪ ﺑﺎ ‪ DOM‬ﮐﺎر ﮐﻨﯿﺪ، ﺑ ﻪ ﺧﻮﺑﯽ وارد ‪ Ajax‬ﺷﻮﻳﺪ و‬ ‫آن ﻣﺴﯿﺮی اﺳﺖ ﮐ ﻪ ﻣﻦ ﻗﺼﺪ دارم ﺑﻪ ﺷﻤﺎ ﻧﺸﺎن دھﻢ. ﻣﻦ در ﻣﻘﺎﻻت ﺑﻌﺪی دوﺑﺎره ﺑﻪ ‪ DOM‬ﻣﯽ ﭘﺮدازم اﻣﺎ‬ ‫ﺑﺮای اﮐﻨﻮن ﻓﻘﻂ ﺑﺪاﻧﯿﺪ ﮐ ﻪ ﺧﺎرج از اﻳﻦ ﺑﺤﺚ اﺳﺖ .زﻣﺎﻧﯿﮑﻪ ﺷﻤﺎ ﺷﺮوع ﺑ ﻪ اﻧﺘﻘﺎل ‪ XML‬ﻣﺎ ﺑﯿﻦ ﮐﺪ ﺟﺎوا‬ ‫اﺳﮑﺮﻳﭙﺖ و ﺳﺮور ﮐﺮده و ﻓﺮم ‪ HTML‬را ﺗﻐﯿﯿﺮ دادﻳﺪ، دوﺑﺎره در ‪ DOM‬ﻋﻤﯿﻖ ﻣﯽ ﺷﻮﻳﺪ. ﺑﺮای اﮐﻨﻮن اﻧﺠﺎم‬ ‫ﺑﻌﻀﯽ ﭘﯿﺸﺮﻓﺖ ھﺎی ﻣﺆﺛﺮ ‪ Ajax‬ﺑﺪون ‪ DOM‬ﻣﻤﮑﻦ اﺳﺖ، ﭘﺲ ﻓﻌﻼ آن را ﮐﻨﺎر ﺑﮕﺬارﻳﺪ.‬ ‫ﺑﺪﺳﺖ آوردن ﯾﮏ ﺷﯿﺊ‪Request‬‬ ‫ﺑﺎ ﻣﻘﺪﻣﻪ ﭘﺎﻳﻪ ای ﮐﻪ داﺷﺘﯿﺪ، وﻗﺖ آن رﺳﯿﺪه ﮐﻪ ﻧﮕﺎھﯽ ﺑ ﻪ ﺟﺰﺋﯿﺎت داﺷﺘﻪ ﺑﺎﺷﯿﺪ. از آﻧﺠﺎﻳﯿﮑﻪ‬ ‫‪XMLHttpRequest‬ﻣﺤﻮر اﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ Ajax‬اﺳﺖ -- و ﺷﺎﻳﺪ ﺑﺮای ﺑﺴﯿﺎری از ﺷﻤﺎ ﺟﺪﻳﺪ ﺑﺎﺷﺪ -- ﻣﻦ‬ ‫از آﻧﺠﺎ ﺷﺮوع ﻣﯽ ﮐﻨﻢ. ھﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در ﻟﯿﺴﺖ 1 دﻳﺪﻳﺪ، اﻳﺠﺎد و اﺳﺘﻔﺎده از اﻳﻦ ﺷﯿﺊ ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ،‬ ‫اﻳﻨﻄﻮر ﻧﯿﺴﺖ؟ ﮐﻤﯽ ﺻﺒﺮ ﮐﻨﯿﺪ.‬ ‫ﻧﺒﺮد رﻧﺞ آور ﻣﺮورﮔﺮھﺎ را در ﭼﻨﺪ ﺳﺎل ﭘﯿﺶ ﺑﻪ ﺧﺎﻃﺮ ﺑﯿﺎورﻳﺪ و اﻳﻨﮑﻪ ﭼﻄﻮر ھﯿﭻ ﭼﯿﺰی در ﻣﺮورﮔﺮھﺎ ﺑﻪ ﻳﮏ‬ ‫ﺷﮑﻞ ﮐﺎر ﻧﻤﯽ ﮐﺮد .اﻟﺒﺘﻪ ﻣﻤﮑﻦ اﺳﺖ ﺷﻤﺎ اﻋﺘﻘﺎد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﯿﺪ وﻟﯽ آن ﺟﻨﮓ ھﺎ ھﻨﻮز اداﻣﻪ دارﻧﺪ، اﻟﺒﺘﻪ‬ ‫در ﻳﮏ ﻣﻘﯿﺎس ﺑﺴﯿﺎر ﮐﻮﭼﮑﺘﺮ. و ﻏﺎﻓﻠﮕﯿﺮی ‪: XMLHttpRequest‬ﻳﮑﯽ از ﻗﺮﺑﺎﻧﯿﺎن اﻳﻦ ﻧﺒﺮد اﺳﺖ. ﺑﻨﺎﺑﺮاﻳﻦ‬ ‫ﺷﻤﺎ ﺑﺮای ﺑﻪ دﺳﺖ آوردن ﻳﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬ﻧﯿﺎز دارﻳﺪ ﮐﻪ ﮐﺎرھﺎی ﻣﺘﻔﺎوﺗﯽ را اﻧﺠﺎم دھﯿﺪ. ﻣﻦ‬ ‫اﻳﻦ ﮐﺎر را ﮔﺎم ﺑ ﻪ ﮔﺎم ﺑﻪ ﺷﻤﺎ ﻧﺸﺎن ﺧﻮاھﻢ داد.‬ ‫ﮐﺎر ﺑﺎ ﻣﺮورﮔﺮھﺎی ﻣﺎﯾﮑﺮوﺳﺎﻓﺖ‬ ‫ﻣﺮورﮔﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺖ ﻳﺎ‪ ، Internet Explorer‬ﺑﺮای ﮐﺎر ﺑﺎ ‪ XML‬از ‪ MSXML Parser‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ )ﺑﺮای‬ ‫اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ درﺑﺎره ‪ MSXML‬ﺑﻪ ﺑﺨﺶ ﻣﻨﺎﺑﻊ اﻳﻦ ﻣﻘﺎﻟﻪ رﺟﻮع ﮐﻨﯿﺪ(. ﺑﻨﺎﺑﺮاﻳﻦ زﻣﺎﻧﯿﮑ ﻪ ﺷﻤﺎ ﺑﺮﻧﺎﻣﻪ ھﺎی ‪Ajax‬‬ ‫ﻣﯽ ﻧﻮﻳﺴﯿﺪ ﮐﻪ ﻧﯿﺎز دارد ﺑﺮ روی ‪ IE‬ﮐﺎر ﮐﻨﺪ، ﺑﺎﻳﺪ اﻳﻦ ﺷﯿﺊ را ﺑ ﻪ روش ﺧﺎﺻﯽ اﻳﺠﺎد ﮐﻨﯿﺪ. اﻣﺎ اﻳﻦ ﮐﺎر آﺳﺎن‬ ‫ﻧﯿﺴﺖ. در ﺣﻘﯿﻘﺖ‪ ، MSXML‬ﺑﺴﺘ ﻪ ﺑﻪ اﻳﻨﮑﻪ ﭼﻪ ورژﻧﯽ از ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺑﺮ روی ‪ IE‬ﻧﺼﺐ ﺷﺪه‬ ‫اﺳﺖ، دو ورژن ﻣﺘﻔﺎوت دارد، ﺑﻨﺎﺑﺮاﻳﻦ ﺷﻤﺎ ﻣﺠﺒﻮرﻳﺪ ﺑﺮای ﮐﻨﺘﺮل ھﺮ دو روش ﮐﺪ ﺑﻨﻮﻳﺴﯿﺪ. ﺑﺮای دﻳﺪن ﮐﺪ ﻻزم‬ ‫ﺟﮫﺖ اﻳﺠﺎد ﻳﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬ﺑﺮ روی ﻣﺮورﮔﺮھﺎی ﻣﺎﻳﮑﺮوﺳﺎﻓﺖ، ﻟﯿﺴﺖ 3 را ﺑﺒﯿﻨﯿﺪ.‬ ‫ﻟﯿﺴﺖ 3. اﯾﺠﺎد ﯾﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬ﺑﺮ روی ﻣﺮورﮔﺮھﺎی ﻣﺎﯾﮑﺮوﺳﺎﻓﺖ‬ ‫;‪var xmlHttp = false‬‬ ‫{ ‪try‬‬ ‫;)"‪xmlHttp = new ActiveXObject("Msxml2.XMLHTTP‬‬ ‫{ )‪} catch (e‬‬ ‫{ ‪try‬‬ ‫;)"‪xmlHttp = new ActiveXObject("Microsoft.XMLHTTP‬‬ ‫{ )2‪} catch (e‬‬ ‫;‪xmlHttp = false‬‬ ‫}‬ ‫}‬ ‫ھﻨﻮز ھﻤ ﻪ اﻳﻦ ﮐﺪ ھﺎ ﻗﺎﺑ ﻞ ﻗﺒﻮل ﺑﻪ ﻧﻈﺮ ﻧﻤﯽ رﺳﺪ اﻣﺎ ﺧﻮب اﺳﺖ. ﺷﻤﺎ ﻗﺒ ﻞ از اﻳﻨﮑﻪ اﻳﻦ ﺳﺮی ﻣﻘﺎﻻت ﺗﻤﺎم‬ ‫ﺷﻮد، در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ، ﮐﻨﺘﺮ ل ﺧﻄﺎ، ﮐﺎﻣﭙﺎﻳﻞ ﺷﺮﻃﯽ و ﻏﯿﺮه وارد ﺧﻮاھﯿﺪ ﺷﺪ. اﮐﻨﻮن ﺷﻤﺎ‬ ‫ﺑﺎﻳﺪ دو ﺧﻂ اﺻﻠﯽ را ﻣﺪ ﻧﻈﺮ داﺷﺘ ﻪ ﺑﺎﺷﯿﺪ:‬ ‫;)"‪xmlHttp = new ActiveXObject("Msxml2.XMLHTTP‬‬ ‫و‬ ‫;)"‪xmlHttp = new ActiveXObject("Microsoft.XMLHTTP‬‬ ‫ﺑﻄﻮر ﺧﻼﺻ ﻪ اﻳﻦ ﮐﺪ ﺳﻌﯽ ﻣﯽ ﮐﻨﺪ ﺗﺎ ﺷﯿﺊ را ﺑﺎ اﺳﺘﻔﺎده از ﻳﮑﯽ از ورژن ھﺎی ‪ MSXML‬اﻳﺠﺎد ﮐﻨﺪ؛ اﮔﺮ اﻧﺠﺎم‬ ‫ﻧﺸﺪ ﺑﺎ اﺳﺘﻔﺎده از ورژن دﻳﮕﺮ ﺷﯿﺊ را اﻳﺠﺎد ﻣﯽ ﮐﻨﺪ. ﺧﻮب اﺳﺖ ﻧﻪ؟ اﮔﺮ ھﯿ ﭻ ﮐﺪام از آﻧﮫﺎ ﮐﺎر ﻧﮑﻨﺪ، ﻣﺘﻐﯿﺮ‬ ‫‪xmlHttp‬ﻣﻘﺪارش ‪ false‬ﻣﯽ ﺷﻮد ﺗﺎ ﺑ ﻪ ﮐﺪ ﺷﻤﺎ ﺑﻔﮫﻤﺎﻧﺪ ﮐﻪ ﻳﮏ ﭼﯿﺰی ﮐﺎر ﻧﮑﺮده اﺳﺖ. اﮔﺮ اﻳﻨﮕﻮﻧﻪ ﺑﺎﺷﺪ،‬ ‫ﺷﻤﺎ اﺣﺘﻤﺎﻻ ﺑﺎ ﻳﮏ ﻣﺮورﮔﺮ ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ ﻣﻮاﺟﻪ ھﺴﺘﯿﺪ و ﻧﯿﺎز اﺳﺖ ﺑﺮای اﻧﺠﺎم اﻳﻦ ﮐﺎر از ﮐﺪ ﻣﺘﻔﺎوﺗﯽ‬ ‫اﺳﺘﻔﺎده ﻧﻤﺎﻳﯿﺪ.‬ ‫ﮐﺎر ﺑﺎ ﻣﺮورﮔﺮھﺎی ‪ Mozilla‬و ﻏﯿﺮ ﻣﺎﯾﮑﺮوﺳﺎﻓﺘﯽ‬ ‫اﮔﺮ ﻣﺮورﮔﺮ ‪ IE‬اﻧﺘﺨﺎب ﺷﻤﺎ ﻧﯿﺴﺖ ﻳﺎ ﺑﺮای ﻣﺮورﮔﺮھﺎی ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ ﮐﺪ ﻧﻮﻳﺴﯽ ﻣﯽ ﮐﻨﯿﺪ، ﺑﻪ ﮐﺪ‬ ‫ﻣﺘﻔﺎوﺗﯽ ﻧﯿﺎر دارﻳﺪ. در ﺣﻘﯿﻘﺖ ﻳﮏ ﺧﻂ ﮐﺪ ﺧﯿﻠﯽ ﺳﺎده اﺳﺖ ﮐ ﻪ ﻗﺒﻼ در ﻟﯿﺴﺖ 1 دﻳﺪه ﺑﻮدﻳﺪ:‬ ‫;‪var xmlHttp = new XMLHttpRequest object‬‬ ‫اﻳﻦ ﺧﻂ ﮐﺪ ﺑﻪ روﺷﯽ ﺧﯿﻠﯽ ﺳﺎده ﺗﺮ ﻳﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬را در ﻣﺮورﮔﺮھﺎی‪ ، Mozilla‬ﻓﺎﻳﺮﻓﺎﮐﺲ،‬ ‫‪ Opera ،Safari‬و ﺗﻘﺮﻳﺒﺎ ھﻤ ﻪ ﻣﺮورﮔﺮھﺎی ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ ﮐﻪ ‪ Ajax‬را ﺑ ﻪ ھﺮ ﻓﺮم ﻳﺎ روﺷﯽ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ‬ ‫ﮐﻨﻨﺪ، ﻣﯽ ﺳﺎزد.‬ ‫ﮐﻨﺎر ھﻢ ﮔﺬاﺷﺘﻦ اﯾﻨﮭﺎ‬ ‫ھﺪف، ﭘﺸﺘﯿﺒﺎﻧﯽ از ھﻤﻪ ﻣﺮورﮔﺮھﺎ اﺳﺖ. ﭼﻪ ﮐﺴﯽ ﺣﺎﺿﺮ ﻣﯽ ﺷﻮد ﺑﺮﻧﺎﻣ ﻪ ای ﺑﻨﻮﻳﺴﺪ ﮐﻪ ﻓﻘﻂ ﺑﺮای ‪ IE‬ﮐﺎر‬ ‫ﮐﻨﺪ ﻳﺎ ﺑﺮﻧﺎﻣﻪ ای ﮐﻪ ﻓﻘﻂ ﺑﺮ روی ﻣﺮورﮔﺮھﺎی ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ ﮐﺎر ﮐﻨﺪ؟ ﺑﺪﺗﺮ اﻳﻨﮑ ﻪ آﻳﺎ ﺷﻤﺎ ﻣﯽ ﺧﻮاھﯿﺪ‬ ‫ﺑﺮﻧﺎﻣﻪ ﺗﺎن را دو ﺑﺎر ﺑﻨﻮﻳﺴﯿﺪ؟ اﻟﺒﺘﻪ ﮐﻪ ﻧﻪ! ﺑﻨﺎﺑﺮاﻳﻦ ﮐﺪ ﺷﻤﺎ ﭘﺸﺘﯿﺒﺎﻧﯽ از ‪ IE‬و ﻣﺮورﮔﺮھﺎی ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ‬ ‫را ﺗﺮﮐﯿﺐ ﻣﯽ ﮐﻨﺪ. ﻟﯿﺴﺖ 4، ﮐﺪ ﻻزم ﺟﮫﺖ اﻧﺠﺎم اﻳﻦ ﮐﺎر را ﻧﺸﺎن ﻣﯽ دھﺪ.‬ ‫ﻟﯿﺴﺖ 4. اﯾﺠﺎد ﯾﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬ﺑﮫ روش ﭼﻨﺪ ﻣﺮورﮔﺮی‬ ‫/* ‪/* Create a new XMLHttpRequest object to talk to the Web server‬‬ ‫;‪var xmlHttp = false‬‬ ‫/*@ ‪/*@cc_on‬‬ ‫)5 => ‪/*@if (@_jscript_version‬‬ ‫{ ‪try‬‬ ‫;)"‪xmlHttp = new ActiveXObject("Msxml2.XMLHTTP‬‬ ‫{ )‪} catch (e‬‬ ‫{ ‪try‬‬ ‫;)"‪xmlHttp = new ActiveXObject("Microsoft.XMLHTTP‬‬ ‫{ )2‪} catch (e‬‬ ‫;‪xmlHttp = false‬‬ ‫}‬ ‫}‬ ‫/*@ ‪@end‬‬ ‫{ )'‪if (!xmlHttp && typeof XMLHttpRequest != 'undefined‬‬ ‫;)(‪xmlHttp = new XMLHttpRequest‬‬ ‫}‬ ‫ﻓﻌﻼ ﺗﻮﺿﯿﺤﺎت و ﺗﮓ ھﺎی ﻣﺮﻣﻮز ﺷﺒﯿﻪ ‪ @cc_on‬را ﻧﺎدﻳﺪه ﺑﮕﯿﻳﺪ. آﻧﮫﺎ دﺳﺘﻮرات ﺧﺎص ﮐﺎﻣﭙﺎﻳﻠﺮ ﺟﺎوا اﺳﮑﺮﭘﺖ‬ ‫ھﺴﺘﻨﺪ ﮐﻪ در ﻣﻘﺎﻟﻪ ﺑﻌﺪی ﻣﻦ، ﮐ ﻪ ﻣﻨﺤﺼﺮا ﺑ ﻪ ﺷﯿﺊ ‪ XMLHttpRequest‬ﻣﯽ ﭘﺮدازد، ﺷﻤﺎ ﺑﺎ آن ﺑﯿﺸﺘﺮ‬ ‫آﺷﻨﺎ ﺧﻮاھﯿﺪ ﺷﺪ. ھﺴﺘ ﻪ اﺻﻠﯽ اﻳﻦ ﮐﺪ ﺑﻪ ﺳﻪ ﻣﺮﺣﻠﻪ ﺗﻘﺴﯿﻢ ﻣﯽ ﺷﻮد:‬ ‫1. اﻳﺠﺎد ﻳﮏ ﻣﺘﻐﯿﺮ ﺑﻪ ﻧﺎم ‪ xmlHttp‬ﺗﺎ ﺑﻪ ﺷﯿﺊ ‪ XMLHttpRequest‬ﮐ ﻪ ﺷﻤﺎ اﻳﺠﺎد ﺧﻮاھﯿﺪ ﮐﺮد، ارﺟﺎع‬ ‫دھﺪ.‬ ‫2. ﺗﻼش ﺑﺮای اﻳﺠﺎد ﺷﯿﺊ در ﻣﺮورﮔﺮھﺎی ﻣﺎﻳﮑﺮوﺳﺎﻓﺖ‬ ‫‪ o‬ﺗﻼش ﺑﺮای اﻳﺠﺎد ﺷﯿﺊ ﺑﺎ اﺳﺘﻔﺎده از ﺷﯿﺊ‪Msxml2.XMLHTTP‬‬ ‫‪ o‬اﮔﺮ اﻧﺠﺎم ﻧﺸﺪ، ﺗﻼش ﺑﺮای اﻳﺠﺎد ﺷﯿﺊ ﺑﺎ اﺳﺘﻔﺎده از ﺷﯿﺊ‪Microsoft.XMLHTTP‬‬ ‫3. اﮔﺮ ‪ xmlHttp‬ھﻨﻮز اﻳﺠﺎد ﻧﺸﺪه اﺳﺖ، اﻳﺠﺎد ﺷﯿﺊ ﺑ ﻪ روش ﻏﯿﺮ ﻣﺎﻳﮑﺮوﺳﺎﻓﺘﯽ‬ ‫در اﻧﺘﮫﺎی اﻳﻦ ﭘﺮوﺳﻪ، ﻣﺘﻐﯿﺮ ‪ xmlHttp‬ﺑﺎﻳﺪ ﺑﻪ ﻳﮏ ﺷﯿﺊ ‪ XMLHttpRequest‬ﻣﻌﺘﺒﺮ ، رﻓﺮﻧﺲ دھﺪ، ﺑﺪون‬ ‫اھﻤﯿﺖ ﺑ ﻪ اﻳﻨﮑﻪ ﮐﺎرﺑﺮان ﺷﻤﺎ ﭼﻪ ﻣﺮورﮔﺮی را اﺟﺮا ﮐﺮده اﻧﺪ.‬ ‫ﯾﮏ ﮐﻠﻤﮫ درﺑﺎره اﻣﻨﯿﺖ‬ ‫ﭼ ﻪ ﺧﺒﺮ از اﻣﻨﯿﺖ؟ ﻣﺮورﮔﺮھﺎی اﻣﺮوزی ﺑﻪ ﮐﺎرﺑﺮان اﻳﻦ اﻣﮑﺎن را ﻣﯽ دھﻨﺪ ﺗﺎ ﺑﺎ ﻏﯿﺮ ﻓﻌﺎل ﮐﺮدن ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا‬ ‫اﺳﮑﺮﻳﭙﺖ و ھﺮ ﺗﻌﺪاد اﺧﺘﯿﺎراﺗﯽ ﮐ ﻪ در ﻣﺮورﮔﺮﺷﺎن وﺟﻮد دارد، اﻣﻨﯿﺘﺸﺎن را ﺑﺎﻻ ﺑﺒﺮﻧﺪ. در اﻳﻦ ﻣﻮارد، ﮐﺪ ﺷﻤﺎ‬ ‫اﺣﺘﻤﺎﻻ در ھﯿﭻ ﻣﻮﻗﻌﯿﺘﯽ ﮐﺎر ﻧﺨﻮاھﺪ ﮐﺮد. ﺑﺮای اﻳﻦ ﺣﺎﻟﺖ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺸﮑﻞ را ﺑ ﻪ دﻗﺖ ﺣﻞ ﮐﻨﯿﺪ -- ﭼﻨﯿﻦ‬ ‫ﭼﯿﺰی ﺧﻮدش ﺣﺪاﻗﻞ ﻳﮏ ﻣﻘﺎﻟﻪ اﺳﺖ، ﭼﯿﺰی ﮐ ﻪ ﻣﻦ ﺑﻌﺪا درﮔﯿﺮ ﺧﻮاھﻢ ﺷﺪ. ﺑﺮای اﮐﻨﻮن، ﺷﻤﺎ ﮐﺪی ﻗﻮی‬ ‫وﻟﯽ ﻧﺎﺗﻤﺎم ﻣﯽ ﻧﻮﻳﺴﯿﺪ ﮐﻪ ﺑﺮای اﻧﺠﺎم ‪ A jax‬ﺗﻮاﻧﻤﻨﺪ اﺳﺖ. ﺷﻤﺎ ﺑﺮ ﺧﻮاھﯿﺪ ﮔﺸﺖ و ﺑ ﻪ ﺟﺰﺋﯿﺎت ﮐﻮﭼﮑﺘﺮ‬ ‫ﺧﻮاھﯿﺪ ﭘﺮداﺧﺖ.‬ ‫درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ در دﻧﯿﺎی آﺟﺎﮐﺲ‬ ‫ﺧﻮب، ﺷﻤﺎ اﮐﻨﻮن ‪ Ajax‬را ﻣﯽ ﻓﮫﻤﯿﺪ و ﻳﮏ ﺗﺼﻮر ﭘﺎﻳ ﻪ از ﺷﯿﺊ ‪ XMLHttpRequest‬و ﭼﮕﻮﻧﮕﯽ اﻳﺠﺎد آن‬ ‫دارﻳﺪ. اﮔﺮ ﺷﻤﺎ ﻣﻄﺎﻟﺐ را ﺑ ﻪ دﻗﺖ ﺧﻮاﻧﺪه ﺑﺎﺷﯿﺪ، ﺣﺘﻤﺎ ﻣﺘﻮﺟﻪ ﺷﺪه اﻳﺪ ﮐﻪ اﻳﻦ ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ‬ ‫اﺳﺖ ﮐﻪ ﺑﺎ ﺑﺮﻧﺎﻣﻪ وب ﻣﻮﺟﻮد در ﺳﺮور ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﯽ ﮐﻨﺪ، ﺑﻪ ﺟﺎی اﻳﻨﮑﻪ ﻓﺮم ‪ HTML‬ﺷﻤﺎ ﻣﺴﺘﻘﯿﻤﺎ ﺑﻪ آن‬ ‫ﺑﺮﻧﺎﻣﻪ ‪ submit‬ﺷﻮد.‬ ‫ﺗﮑﻪ ﮔﻤﺸﺪه ﭼﯿﺴﺖ؟ ﭼﮕﻮﻧﻪ ﻋﻤﻼ از ‪ XMLHttpRequest‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ؟ از آﻧﺠﺎﻳﯿﮑﻪ اﻳﻦ ﻳﮏ ﮐﺪ ﻣﮫﻢ اﺳﺖ‬ ‫ﮐ ﻪ ﺷﻤﺎ ﺑﻪ ﻓﺮم ھﺎی ﻣﺨﺘﻠﻒ در ھﻤﻪ ﺑﺮﻧﺎﻣ ﻪ ھﺎی ‪ Ajax‬ﮐﻪ ﺧﻮاھﯿﺪ ﻧﻮﺷﺖ، اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﺪ، ﻧﮕﺎھﯽ ﺳﺮﻳﻊ‬ ‫ﺑﺮ اﻳﻦ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐ ﻪ ﻣﺪل ﭘﺎﻳﻪ درﺧﻮاﺳﺖ/ﭘﺎﺳ ﺦ در ‪ Ajax‬ﭼﮕﻮﻧﻪ اﺳﺖ.‬ ‫ﺳﺎﺧﺘﻦ ﯾﮏ درﺧﻮاﺳﺖ)‪(Request‬‬ ‫ﺷﻤﺎ ﺷﯿﺊ ﺟﺪﻳﺪ و درﺧﺸﺎن ‪ XMLHttpRequest‬را دارﻳﺪ؛ ﺣﺎ ل آﻧﺮا ﺑﺮای ﻳﮏ ﭼﺮﺧﺶ ﻧﮕﻪ دارﻳﺪ. اﺑﺘﺪا ﺷﻤﺎ‬ ‫ﻧﯿﺎز ﺑﻪ ﻳﮏ ﻣﺘﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ دارﻳﺪ ﮐﻪ ﺻﻔﺤﻪ وب ﺷﻤﺎ ﺑﺘﻮاﻧﺪ ﻓﺮاﺧﻮاﻧﯽ ﮐﻨﺪ )ھﻤﺎﻧﻨﺪ زﻣﺎﻧﯿﮑﻪ ﮐﺎرﺑﺮ ﻣﺘﻨﯽ را‬ ‫ﺗﺎﻳﭗ ﻣﯽ ﮐﻨﺪ ﻳﺎ آﻳﺘﻤﯽ را از ﻳﮏ ﻣﻨﻮ اﻧﺘﺨﺎب ﻣﯽ ﻧﻤﺎﻳﺪ(. ﺳﭙﺲ ﺷﻤﺎ از ﻣﺮاﺣﻞ ﭘﺎﻳﻪ زﻳﺮ در ﺗﻘﺮﻳﺒﺎ ھﻤﻪ ﺑﺮﻧﺎﻣﻪ‬ ‫ھﺎی ‪ Ajax‬ﺧﻮد ﭘﯿﺮوی ﺧﻮاھﯿﺪ ﮐﺮد:‬ ‫1.‬ ‫2.‬ ‫3.‬ ‫4.‬ ‫5.‬ ‫ھﺮ داده ای ﮐﻪ ﻧﯿﺎز دارﻳﺪ، از وب ﻓﺮﻣﺘﺎن درﻳﺎﻓﺖ ﮐﻨﯿﺪ.‬ ‫‪URL‬ی ﮐﻪ ﻣﯽ ﺧﻮاھﯿﺪ ﺑ ﻪ آن وﺻﻞ ﺷﻮﻳﺪ را ﺑﺴﺎزﻳﺪ.‬ ‫ﻳﮏ اﺗﺼﺎ ل ﺑﺎ ﺳﺮور ﺑﺮﻗﺮار ﮐﻨﯿﺪ.‬ ‫ﺗﺎﺑﻌﯽ را ﮐﻪ در ﺳﻤﺖ ﺳﺮور ﺑﺎﻳ ﺪ اﺟﺮا ﺷﻮد، ﻣﺸﺨﺺ ﻧﻤﺎﻳﯿﺪ.‬ ‫درﺧﻮاﺳﺖ را ﺑﻔﺮﺳﺘﯿﺪ.‬ ‫ﻟﯿﺴﺖ 5 ﻳﮏ ﻣﺘﺪ ﺳﺎده ‪ Ajax‬اﺳﺖ ﮐﻪ ھﻤﻪ اﻳﻨﮫﺎ را در اﻳﻦ روش ﻧﺸﺎن ﻣﯽ دھﺪ:‬ ‫ﻟﯿﺴﺖ 5 .اﯾﺠﺎد ﯾﮏ درﺧﻮاﺳﺖ ﺑﺎ‪Ajax‬‬ ‫{ )(‪function callServer‬‬ ‫‪// Get the city and state from the web form‬‬ ‫;‪var city = document.getElementById("city").value‬‬ ‫;‪var state = document.getElementById("state").value‬‬ ‫‪// Only go on if there are values for both fields‬‬ ‫;‪if ((city == null) || (city == "")) return‬‬ ‫;‪if ((state == null) || (state == "")) return‬‬ ‫‪// Build the URL to connect to‬‬ ‫+ "=‪var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state‬‬ ‫;)‪escape(state‬‬ ‫‪// Open a connection to the server‬‬ ‫;)‪xmlHttp.open("GET", url, true‬‬ ‫‪// Setup a function for the server to run when it's done‬‬ ‫;‪xmlHttp.onreadystatechange = updatePage‬‬ ‫‪// Send the request‬‬ ‫;)‪xmlHttp.send(null‬‬ ‫}‬ ‫ﺑﯿﺸﺘﺮ اﻳﻦ ﮐﺪ، واﺿﺢ و روﺷﻦ اﺳﺖ .ﺧﻄﻮط اول ﮐﺪ، از ﮐﺪھﺎی ﭘﺎﻳ ﻪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺑ ﻪ ﻣﻨﻈﻮر ﺟﻤﻊ آوری‬ ‫ﻣﻘﺎدﻳﺮ ﺗﻌﺪادی از ﻓﯿﻠﺪ ھﺎی ﻓﺮم اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ. ﺳﭙﺲ ﮐﺪ، ﻳﮏ اﺳﮑﺮﻳﭙﺖ ‪ PHP‬را ﺑﻪ ﻋﻨﻮان ﻣﻘﺼﺪی ﮐﻪ‬ ‫ﺑﺎﻳﺪ ﺑﻪ آن ﻣﺘﺼﻞ ﺷﻮد، ﻣﺸﺨﺺ ﻣﯽ ﻧﻤﺎﻳﺪ. ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ‪ URL‬اﺳﮑﺮﻳﭙﺖ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ‬ ‫و ﺳﭙﺲ ﺷﮫﺮ و اﺳﺘﺎن )درﻳﺎﻓﺖ ﺷﺪه از ﻓﺮم( ﺑﺎ اﺳﺘﻔﺎده از ﭘﺎراﻣﺘﺮھﺎی ﺳﺎده ﻣﺘﺪ ‪ GET‬ﺑﻪ آن اﺿﺎﻓﻪ ﺷﺪه‬ ‫اﺳﺖ.‬ ‫در ﻣﺮﺣﻠﻪ ﺑﻌﺪ، ﻳﮏ اﺗﺼﺎل ﺑﺎز ﺷﺪه اﺳﺖ .اﻳﻦ اوﻟﯿﻦ ﺟﺎﻳﯽ اﺳﺖ ﮐ ﻪ دوﺑﺎر ه ‪ XMLHttpRequest‬را در ﻋﻤﻞ‬ ‫ﻣﯽ ﺑﯿﻨﯿﺪ. ﻣﺘﺪ اﺗﺼﺎل ﺗﻌﯿﯿﻦ ﺷﺪه اﺳﺖ)‪ ، (GET‬ھﻤﭽﻨﯿﻦ‪ URL‬ی ﮐﻪ ﺑﺎﻳﺪ ﺑﻪ آن ﻣﺘﺼ ﻞ ﺷﻮد. ﭘﺎراﻣﺘﺮ آﺧﺮ،‬ ‫زﻣﺎﻧﯿﮑﻪ ‪ true‬ﺑﺎﺷﺪ، ﻳﮏ اﺗﺼﺎل ﻏﯿﺮ ھﻤﺰﻣﺎن )آﺳﻨﮑﺮون( را درﺧﻮاﺳﺖ ﻣﯽ دھﺪ )ﭘﺲ اﻳﻦ اﺳﺖ ﮐﻪ ‪ A jax‬را‬ ‫ﻣﯽ ﺳﺎزد(. اﮔﺮ ﺑﻪ ﺻﻮرت ‪ false‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ، ﮐﺪ، ﻣﻨﺘﻈﺮ ﺳﺮور ﻣﯽ ﻣﺎﻧﺪ ﺗﺎ درﺧﻮاﺳﺖ ﺳﺎﺧﺘﻪ ﺷﻮد و ﺗﺎ‬ ‫زﻣﺎﻧﯿﮑ ﻪ ﭘﺎﺳﺨﯽ داده ﻧﺸﺪه ﺑﺎﺷﺪ، اداﻣﻪ ﻧﻤﯽ دھﺪ. ﺑﺎ ﺳﺖ ﮐﺮدن اﻳﻦ ﭘﺎراﻣﺘﺮ ﺑﻪ‪ ، true‬ﮐﺎرﺑﺮان ﺷﻤﺎ ﻣﯽ‬ ‫ﺗﻮاﻧﻨﺪ ھﻤﺰﻣﺎن از ﻓﺮم اﺳﺘﻔﺎده ﻧﻤﺎﻳﻨﺪ )و ﺣﺘﯽ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺳﺎﻳﺮ ﻓﺮاﺧﻮاﻧﯽ ھﺎی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ را اﻧﺠﺎم دھﻨﺪ(‬ ‫ﺗﺎ زﻣﺎﻧﯿﮑ ﻪ ﺳﺮور اﻳﻦ درﺧﻮاﺳﺖ را در ﭘﺸﺖ زﻣﯿﻨﻪ ﭘﺮدازش ﮐﻨﺪ.‬ ‫ﺧﺼﯿﺼﻪ ‪ onreadystatechange‬از( ‪ xmlHttp‬ﺑﻪ ﺧﺎﻃﺮ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐ ﻪ ﻧﻤﻮﻧﻪ ﺳﺎﺧﺘﻪ ﺷﺪه از ﺷﯿﺊ‬ ‫‪XMLHttpRequest‬اﺳﺖ( ﺑﻪ ﺷﻤﺎ اﻳﻦ اﻣﮑﺎن را ﻣﯽ دھﺪ ﺗﺎ ﺑ ﻪ ﺳﺮور اﻃﻼع دھﯿﺪ ﮐﻪ زﻣﺎﻧﯿﮑﻪ ﮐﺎر اﺟﺮاﺋﯿﺶ‬ ‫را ﺗﻤﺎم ﮐﺮد، ﭼﻪ ﮐﺎر ﮐﻨﺪ )ﺣﺎل اﻳﻦ ﮐﺎر 5 دﻗﯿﻘ ﻪ ﻃﻮل ﺑﮑﺸﺪ ﻳﺎ 5 ﺳﺎﻋﺖ(. از آﻧﺠﺎﻳﯿﮑﻪ ﻣﻨﺘﻈﺮ ﺳﺮور ﻧﻤﯽ ﻣﺎﻧﺪ،‬ ‫ﻧﯿﺎز اﺳﺖ ﮐﻪ ﺑﻪ ﺳﺮور اﺟﺎزه دھﯿﺪ ﮐﻪ ﺑﺪاﻧﺪ ﭼﻪ ﮐﺎری را اﻧﺠﺎم دھﺪ ﺗﺎ ﺷﻤﺎ ﺑﺘﻮاﻧﯿﺪ ﻋﮑﺲ اﻟﻌﻤﻞ ﻧﺸﺎن دھﯿﺪ.‬ ‫در اﻳﻦ ﺣﺎﻟﺖ، ھﻨﮕﺎﻣﯿﮑﻪ ﺳﺮور ﭘﺮدازش درﺧﻮاﺳﺖ ﺷﻤﺎ را ﺗﻤﺎم ﮐﺮد، ﻳﮏ ﻣﺘﺪ ﺧﺎص --ﺑ ﻪ ﻧﺎم‬ ‫-)(‪updatePage‬ﻓﻌﺎل ﺧﻮاھﺪ ﺷﺪ.‬‫در ﭘﺎﻳﺎن، ﻣﺘﺪ )(‪ send‬ﺑﺎ ﻣﻘﺪار ‪ null‬ﻓﺮاﺧﻮاﻧﯽ ﺷﺪه اﺳﺖ. از آﻧﺠﺎﻳﯿﮑﻪ ﺷﻤﺎ داده ھﺎی ارﺳﺎﻟﯽ ﺑﻪ ﺳﺮور را‬ ‫)ﺷﮫﺮ و اﺳﺘﺎن( ﺑﻪ ‪ URL‬درﺧﻮاﺳﺘﯽ اﺿﺎﻓﻪ ﮐﺮده اﻳﺪ، ﻧﯿﺎزی ﻧﺪارﻳﺪ ﮐﻪ ﭼﯿﺰ دﻳﮕﺮی را در درﺧﻮاﺳﺖ ارﺳﺎل‬ ‫ﻧﻤﺎﻳﯿﺪ. ﺑﻨﺎﺑﺮاﻳﻦ اﻳﻦ ﻣﺘﺪ درﺧﻮاﺳﺖ ﺷﻤﺎ را ارﺳﺎل ﮐﺮده و ﺳﺮور ﻣﯽ ﺗﻮاﻧﺪ آﻧﭽ ﻪ را ﮐﻪ ﻣﯽ ﺧﻮاھﯿﺪ، اﻧﺠﺎم‬ ‫دھﺪ.‬ ‫اﮔﺮ ﭼﯿﺰی از اﻳﻦ ﻣﻮرد ﻣﺘﻮﺟﻪ ﻧﻤﯽ ﺷﻮﻳﺪ، ﺑ ﻪ ﺳﺎدﮔﯽ آن ﺗﻮﺟﻪ ﻧﻤﺎﻳﯿﺪ. ﺑﻪ ﺟﺰ ﻃﺒﻌﯿﺖ ﻏﯿﺮ ھﻤﺰﻣﺎﻧﯽ ‪ Ajax‬ﮐ ﻪ‬ ‫ﺑﺎﻳﺪ آﻧﺮا در ذھﻦ داﺷﺘ ﻪ ﺑﺎﺷﯿﺪ، ‪ Ajax‬ﺧﻮد ﭼﯿﺰ ﺳﺎده ای اﺳﺖ .ﺷﻤﺎ ‪ Ajax‬را ﺗﺤﺴﯿﻦ ﺧﻮاھﯿﺪ ﮐﺮد ﮐ ﻪ ﭼﮕﻮﻧ ﻪ‬ ‫ﺑﻪ ﺷﻤﺎ اﻣﮑﺎن ﻣﯽ دھﺪ ﺗﺎ ﺑﻪ ﺟﺎی ﺗﻤﺮﮐﺰ ﺑﺮ ﮐﺪھﺎی ﭘﯿﭽﯿﺪه درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ‪ ، HTTP‬ﺑﺮ روی ﺑﺮﻧﺎﻣ ﻪ ھﺎ و راﺑﻂ‬ ‫ﮐﺎرﺑﺮی ﺧﻮب ﺗﻤﺮﮐﺰ ﻧﻤﺎﻳﯿﺪ.‬ ‫ﮐﺪ ﻧﺸﺎن داده ﺷﺪه در ﻟﯿﺴﺖ 5 ﺑﻪ ھﻤﺎن ﺳﺎدﮔﯽ ﮐﻪ ﮐﺎر ﻣﯽ ﮐﻨﺪ اﺳﺖ. داده ھﺎ ﻣﺘﻦ ﺳﺎده ھﺴﺘﻨﺪ و ﻣﯽ‬ ‫ﺗﻮاﻧﻨﺪ ﺑﻪ ﻋﻨﻮان ﺑﺨﺸﯽ از ‪ URL‬درﺧﻮاﺳﺖ اﺿﺎﻓ ﻪ ﺷﻮﻧﺪ. ﺑﻪ ﺟﺎی ﻣﺘﺪ ﭘﯿﭽﯿﺪه‪ ، POST‬ﻣﺘﺪ ‪ GET‬درﺧﻮاﺳﺖ را‬ ‫ارﺳﺎل ﻣﯽ ﮐﻨﺪ. در اﻳﻦ روش ھﯿﭻ ‪ XML‬ﻳﺎ ﻣﺤﺘﻮای‪ Header‬ی اﺿﺎﻓﻪ ﻧﻤﯽ ﺷﻮد و ھﯿﭻ داده ای در ﻣﺘﻦ‬ ‫درﺧﻮاﺳﺖ ارﺳﺎل ﻧﻤﯽ ﮔﺮدد --ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ اﻳﻦ ھﻤﺎن ‪ Ajax‬اﻳﺪه آ ل اﺳﺖ.‬ ‫ﻧﺘﺮﺳﯿﺪ؛ در اداﻣﻪ اﻳﻦ ﺳﺮی از ﻣﻘﺎﻻت، ﻣﺒﺎﺣﺚ ﭘﯿﭽﯿﺪه ﺗﺮ ﻣﯽ ﺷﻮﻧﺪ. ﺷﻤﺎ ﻳﺎد ﻣﯽ ﮔﯿﺮﻳﺪ ﮐﻪ ﭼﮕﻮﻧ ﻪ‬ ‫درﺧﻮاﺳﺖ ھﺎی ‪ POST‬را ارﺳﺎل ﮐﻨﯿﺪ، ﭼﮕﻮﻧﻪ ‪ Header‬درﺧﻮاﺳﺖ و ﻧﻮع ﻣﺤﺘﻮا )‪ (Content Type‬را ﺳﺖ‬ ‫ﮐﻨﯿﺪ، و ﭼﮕﻮﻧﻪ ‪ XML‬را در ﭘﯿﻐﺎﻣﺘﺎن ﻗﺮار دھﯿﺪ، ﭼﮕﻮﻧﻪ اﻣﻨﯿﺖ را ﺑ ﻪ درﺧﻮاﺳﺘﺘﺎن اﺿﺎﻓﻪ ﻧﻤﺎﻳﯿﺪ --اﻳﻦ ﻟﯿﺴﺖ‬ ‫ﺧﯿﻠﯽ ﻃﻮﻻﻧﯽ اﺳﺖ. اﻵن ﺑﻪ ﺧﺎﻃﺮ ﺳﺨﺘﯽ ﻣﺒﺎﺣﺚ ﻧﮕﺮان ﻧﺒﺎﺷﯿﺪ. ﺑﺮ روی ﻣﺒﺎﺣﺚ ﭘﺎﻳﻪ ﺟﻠﻮ ﺑﺮوﻳﺪ و ﺑﻪ زودی‬ ‫ﻳﮏ زرادﺧﺎﻧﻪ ﮐﺎﻣﻞ از اﺑﺰارھﺎی ‪ Ajax‬ﺧﻮاھﯿﺪ ﺳﺎﺧﺖ.‬ ‫ﮐﺎر ﺑﺎ ﭘﺎﺳﺦ)‪(Response‬‬ ‫وﻗﺖ آن رﺳﯿﺪه ﮐ ﻪ ﺷﻤﺎ ﺑﺎ ﭘﺎﺳﺦ ﺳﺮور ﮐﺎر ﮐﻨﯿﺪ. ﺷﻤﺎ در ﺣﻘﯿﻘﺖ دو ﭼﯿﺰ را ﻧﯿﺎز اﺳﺖ ﺑﺪاﻧﯿﺪ:‬ ‫•‬ ‫•‬ ‫ھﯿﭻ ﮐﺎری اﻧﺠﺎم ﻧﺪھﯿﺪ ﺗﺎ زﻣﺎﻧﯿﮑﻪ ﺧﺼﯿﺼﻪ ‪ xmlHttp.readyState‬ﻣﻘﺪارش ﺑﺮاﺑﺮ 4 ﺷﻮد.‬ ‫ﺳﺮور ﭘﺎﺳﺦ ﺧﻮد را در ﺧﺼﯿﺼﻪ ‪ xmlHttp.responseText‬ﻗﺮار ﺧﻮاھﺪ داد.‬ ‫اوﻟﯽ --وﺿﻌﯿﺖ آﻣﺎدﮔﯽ-- در ﻣﻘﺎﻟﻪ ﺑﻌﺪی اداﻣ ﻪ داده ﻣﯽ ﺷﻮد. ﺷﻤﺎ در آﻧﺠﺎ درﺑﺎره ﻣﺮاﺣﻞ ﻳﮏ درﺧﻮﺳﺖ‬ ‫‪HTTP‬ﺑﯿﺸﺘﺮ ﻳﺎد ﺧﻮاھﯿﺪ ﮔﺮﻓﺖ. ﻓﻌﻼ اﮔﺮ ﺷﻤﺎ وﺿﻌﯿﺖ را ﺑﺮای ﻳﮏ ﻣﻘﺪار ﻣﺸﺨﺺ ﭼﮏ ﮐﻨﯿﺪ )4(، ھﻤﻪ ﭼﯿﺰ‬ ‫ﮐﺎر ﺧﻮاھﺪ ﮐﺮد )و ﺷﻤﺎ ﺑﺎﻳﺪ ﻳﮑﺴﺮی ﻣﻮارد را در ﻣﻘﺎﻟ ﻪ ﻣﺪﻧﻈﺮ ﻗﺮار دھﯿﺪ(. ﻣﻮرد دوم ﮐﻪ آﺳﺎن اﺳﺖ از ﺧﺼﯿﺼﻪ‬ ‫‪xmlHttp.responseText‬ﺑﻪ ﻣﻨﻈﻮر درﻳﺎﻓﺖ ﭘﺎﺳﺦ ﺳﺮور اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ. ﻟﯿﺴﺖ 6 ﻳﮏ ﻣﺜﺎ ل از ﻳﮏ‬ ‫ﻣﺘﺪی اﺳﺖ ﮐﻪ ﺳﺮور ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮ اﺳﺎس ﻣﻘﺎدﻳﺮ ارﺳﺎﻟﯽ در ﻟﯿﺴﺖ 5 ﻓﺮاﺧﻮاﻧﯽ ﻧﻤﺎﻳﺪ.‬ ‫ﻟﯿﺴﺖ 6. ﮐﺎر ﺑﺎ ﭘﺎﺳﺦ ﺳﺮو ر‬ ‫{ )(‪function updatePage‬‬ ‫{ )4 == ‪if (xmlHttp.readyState‬‬ ‫;‪var response = xmlHttp.responseText‬‬ ‫;‪document.getElementById("zipCode").value = response‬‬ ‫}‬ ‫}‬ ‫دوﺑﺎره ﻣﯽ ﺑﯿﻨﯿﺪ ﮐﻪ اﻳﻦ ﮐﺪ ﺧﯿﻠﯽ ﻣﺸﮑﻞ ﻳﺎ ﭘﯿﭽﯿﺪه ﻧﯿﺴﺖ. اﻳﻦ ﻣﺘﺪ ﺻﺒﺮ ﻣﯽ ﮐﻨﺪ ﺗﺎ ﺳﺮور ﺑﺎ ﻳﮏ وﺿﻌﯿﺖ‬ ‫ﻣﻨﺎﺳﺐ آن را ﻓﺮاﺧﻮاﻧﯽ ﮐﻨﺪ و ﺳﭙﺲ ﻣﻘﺎدﻳﺮی را ﮐﻪ ﺳﺮور ﻓﺮﺳﺘﺎده اﺳﺖ، ﺑﻪ ﻣﻨﻈﻮر ﺳﺖ ﮐﺮدن ﻣﻘﺪار ﻳﮏ‬ ‫ﻓﯿﻠﺪ از ﻓﺮم اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﺪ )در اﻳﻦ ﻣﺜﺎ ل ﮐﺪ ﭘﺴﺘﯽ ﺑﺮای ﺷﮫﺮ و اﺳﺘﺎن وارد ﺷﺪه ﺗﻮﺳﻂ ﮐﺎرﺑﺮ-- )اﻣﺎ ﮐﺎرﺑﺮ‬ ‫ھﺮﮔﺰ ﻣﺠﺒﻮر ﻧﯿﺴﺖ ﮐﻪ دﮐﻤﻪ ای را ﮐﻠﯿﮏ ﮐﻨﺪ !اﻳﻦ ھﻤﺎن اﺣﺴﺎس ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ desktop‬اﺳﺖ ﮐﻪ ﻗﺒﻼ درﺑﺎره‬ ‫آن ﺻﺤﺒﺖ ﮐﺮده ﺑﻮدم. ﭘﺎﺳﺨﺪھﯽ، اﺣﺴﺎس دﻳﻨﺎﻣﯿﮏ ﺑﻮدن و ﺑﺴﯿﺎری دﻳﮕﺮ ھﻤﻪ ﺑﺎ ﻳﮏ ﮐﺪ ﮐﻮﭼﮏ.‪Ajax‬‬ ‫ﺧﻮاﻧﻨﺪﮔﺎن ھﺸﯿﺎر ﺑﺎﻳﺪ ﺗﻮﺟ ﻪ داﺷﺘﻪ ﺑﺎﺷﻨﺪ ﮐﻪ ﻓﯿﻠﺪ ‪ ZipCode‬ﻳﮏ ﻓﯿﻠﺪ ‪ Text‬ﻧﺮﻣﺎل اﺳﺖ. زﻣﺎﻧﯿﮑ ﻪ ﺳﺮور‬ ‫ﮐﺪﭘﺴﺘﯽ را ﺑﺮﮔﺸﺖ داد و ﻣﺘﺪ )(‪ updatePage‬ﻣﻘﺪر آن ﻓﯿﻠﺪ را ﺑﺎ ﮐﺪﭘﺴﺘﯽ ﺷﮫﺮ/اﺳﺘﺎن ﺳﺖ ﮐﺮد،‬ ‫ﮐﺎرﺑﺮان ﻣﯽ ﺗﻮاﻧﻨﺪ ﻣﻘﺪار را ﺑﺎزﻧﻮﻳﺴﯽ ﮐﻨﻨﺪ. اﻳﻦ ﮐﺎر ﺑﻪ دو دﻟﯿ ﻞ ﻋﻤﺪی اﺳﺖ: ﺑﺮای اﻳﻨﮑﻪ ھﻤﻪ ﭼﯿﺰ در اﻳﻦ‬ ‫ﻣﺜﺎل ﺳﺎده ﺗﺮ ﺑﺎﺷﺪ و ﺑﻪ ﺷﻤﺎ ﻧﺸﺎن دھﯿﻢ ﮐ ﻪ ﺑﻌﻀﯽ اوﻗﺎت ﺷﻤﺎ ﻣﯽ ﺧﻮاھﯿﺪ ﮐﻪ ﮐﺎرﺑﺮان ﻗﺎدر ﺑﺎﺷﻨﺪ ﮐﻪ‬ ‫آﻧﭽﻪ را ﮐﻪ ﺳﺮور ﻣﯽ ﮔﻮﻳﺪ ﺑﺎزﻧﻮﻳﺴﯽ ﻧﻤﺎﻳﻨﺪ. ھﺮ دو اﻳﻨﮫﺎ را در ذھﻦ داﺷﺘﻪ ﺑﺎﺷﯿﺪ؛ اﻳﻦ ﻣﻮارد در ﻳﮏ ﻃﺮاﺣﯽ‬ ‫ﺧﻮب ‪ UI‬ﻣﮫﻢ اﺳﺖ.‬ ‫ﮔﺮﻓﺘﺎری در وب ﻓﺮم‬ ‫ﺧﻮب ﭼﻪ ﭼﯿﺰی ﺑﺎﻗﯿﻤﺎﻧﺪه اﺳﺖ؟ ﻋﻤﻼ ھﯿﭻ ﭼﯿﺰ. ﺷﻤﺎ ﻳﮏ ﻣﺘﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ دارﻳﺪ ﮐﻪ اﻃﻼﻋﺎت وارد ﺷﺪه در‬ ‫ﻓﺮم ﺗﻮﺳﻂ ﮐﺎرﺑﺮ را ﺟﻤﻊ آوری ﮐﺮده، آﻧﺮا ﺑﻪ ﺳﺮور ﻣﯽ ﻓﺮﺳﺘﺪ، ﻣﺘﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ دﻳﮕﺮی را ﺑ ﻪ ﻣﻨﻈﻮر ﮔﻮش‬ ‫دادن و ﮐﺎر ﮐﺮدن ﺑﺎ ﭘﺎﺳﺦ، اراﺋﻪ ﻣﯽ دھﺪ. و ﺣﺘﯽ ھﻨﮕﺎﻣﯽ ﮐﻪ ﭘﺎﺳﺦ رﺳﯿﺪ، ﻣﻘﺪار ﻳﮏ ﻓﯿﻠﺪ را ﺳﺖ ﻣﯽ ﮐﻨﺪ.‬ ‫آﻧﭽﻪ ﮐﻪ واﻗﻌﺎ ﺑﺎﻗﯿﻤﺎﻧﺪه، ﻓﺮاﺧﻮاﻧﯽ آن ﻣﺘﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ اوﻟﯽ و ﺷﺮوع ﮐﻞ ﭘﺮوﺳ ﻪ اﺳﺖ. ﺑﺪﻳﮫﯽ اﺳﺖ ﮐﻪ‬ ‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﻳﮏ دﮐﻤ ﻪ را ﻓﺮم ‪ H TML‬ﺗﺎن اﺿﺎﻓﻪ ﮐﻨﯿﺪ، اﻣﺎ آن زﻳﺒﺎﻳﯽ ﺳﺎ ل 1002 اﺳﺖ، اﻳﻨﻄﻮر ﻓﮑﺮ ﻧﻤﯽ‬ ‫ﮐﻨﯿﺪ؟ از ﻣﺰاﻳﺎی ﺗﮑﻨﻮﻟﻮژی ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺷﺒﯿﻪ ﻟﯿﺴﺖ 7 اﺳﺘﻔﺎده ﮐﻨﯿﺪ.‬ ‫ﻟﯿﺴﺖ 7. ﺷﺮوع ﯾﮏ ﭘﺮوﺳﮫ‪Ajax‬‬ ‫>‪<form‬‬ ‫"52"=‪<p>City: <input type="text" name="city" id="city" size‬‬ ‫>‪o nChange="callServer();" /></p‬‬ ‫"52"=‪<p>State: <input type="text" name="state" id="state" size‬‬ ‫>‪o nChange="callServer();" /></p‬‬ ‫>‪<p>Zip Code: <input type="text" name="zipCode" id="zipCode" size="5" /></p‬‬ ‫>‪</form‬‬ ‫اﮔﺮ اﺣﺴﺎس ﻣﯽ ﮐﻨﯿﺪ ﮐ ﻪ اﻳﻦ ﮐﺪ ﺷﺒﯿ ﻪ ﮐﺪھﺎی ﻣﻌﻤﻮﻟﯽ اﺳﺖ، ﺣﻖ ﺑﺎ ﺷﻤﺎﺳﺖ. زﻣﺎﻧﯿﮑﻪ ﻳﮏ ﮐﺎرﺑﺮ ﻣﻘﺪاری‬ ‫ﺟﺪﻳﺪ ﺑﺮای ھﻢ ﻓﯿﻠﺪ ﺷﮫﺮ و ھﻢ اﺳﺘﺎن وارد ﻣﯽ ﮐﻨﺪ، ﻣﺘﺪ )(‪ callServer‬ﻓﺮاﺧﻮاﻧﯽ ﺷﺪه و ﺑﺎز ی ‪Ajax‬‬ ‫ﺷﺮوع ﻣﯽ ﺷﻮد .اﺣﺴﺎس ﻣﯽ ﮐﻨﯿﺪ ﮐﻪ ﺑﺮ روی ھﻤ ﻪ ﭼﯿﺰ ﮐﻨﺘﺮل دارﻳﺪ؟ ﺧﻮب اﺳﺖ؛ اﻳﺪه ھﻤﯿﻦ اﺳﺖ!‬ ‫در ﺧﺎﺗﻤﮫ‬ ‫در اﻳﻦ ﻣﺮﺣﻠﻪ اﺣﺘﻤﺎﻻ آﻣﺎده ﻧﯿﺴﺘﯿﺪ ﮐﻪ ﺑﺮوﻳﺪ و اوﻟﯿﻦ ﺑﺮﻧﺎﻣﻪ ‪ A jax‬ﺧﻮدﺗﺎن را ﺑﻨﻮﻳﺴﯿﺪ --ﺣﺪاﻗﻞ ﺗﺎ وﻗﺘﯿﮑﻪ ﮐﻤﯽ‬ ‫در ﺑﺨﺶ ﻣﻨﺎﺑﻊ ﻋﻤﯿﻖ ﻧﺸﺪه اﻳﺪ. اﻣﺎ ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ اﻳﺪه اﺻﻠﯽ درﺑﺎره اﻳﻨﮑ ﻪ ﭼﮕﻮﻧ ﻪ اﻳﻦ ﺑﺮﻧﺎﻣ ﻪ ھﺎ ﮐﺎر ﻣﯽ‬ ‫ﮐﻨﻨﺪ و ﻳﮏ ﺷﻨﺎﺧﺖ ﭘﺎﻳ ﻪ از ﺷﯿﺊ ‪ XMLHttpRequest‬را ﺷﺮوع ﮐﻨﯿﺪ .در ﻣﻘﺎﻻت ﺑﻌﺪی ﺷﻤﺎ ﻳﺎد ﻣﯽ ﮔﯿﺮﻳﺪ‬ ‫ﮐ ﻪ در اﻳﻦ ﺷﯿﺊ اﺳﺘﺎد ﺷﻮﻳﺪ، ﭼﮕﻮﻧ ﻪ ارﺗﺒﺎﻃﺎت ﺟﺎوا اﺳﮑﺮﻳﭙﺖ-ﺑﻪ-ﺳﺮور را اﻧﺠﺎم دھﯿﺪ، ﭼﮕﻮﻧﻪ ﺑﺎ ﻓﺮم ھﺎی‬ ‫‪HTML‬ﮐﺎر ﮐﻨﯿﺪ، و ﺣﺘﯽ ﮐﻨﺘﺮﻟﯽ ﺑﺮ روی ‪ DOM‬داﺷﺘ ﻪ ﺑﺎﺷﯿﺪ.‬ ‫اﻵن ﮐﻤﯽ وﻗﺖ ﺑﮕﺬارﻳﺪ و ﻓﻘﻂ درﺑﺎره اﻳﻨﮑﻪ ﺑﺮﻧﺎﻣ ﻪ ھﺎی ‪ A jax‬ﭼﻘﺪر ﻗﻮی ھﺴﺘﻨﺪ، ﻓﮑﺮ ﮐﻨﯿﺪ. ﻓﺮم وﺑﯽ را ﺗﺼﻮر‬ ‫ﮐﻨﯿﺪ ﮐ ﻪ ﻧﻪ ﺗﻨﮫﺎ ﻣﻮﻗﻊ ﮐﻠﯿﮏ دﮐﻤﻪ ﺑﻪ ﺷﻤﺎ ﭘﺎﺳﺦ ﻣﯽ دھﺪ، ﺑﻠﮑ ﻪ ھﻨﮕﺎﻣﯿﮑﻪ ﺷﻤﺎ در ﻳﮏ ﻓﯿﻠﺪ ﺗﺎﻳﭗ ﻣﯽ ﮐﻨﯿﺪ،‬ ‫وﻗﺘﯿﮑﻪ ﻳﮏ آﻳﺘﻢ ار از ‪ Combo box‬اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﯿﺪ... ﺣﺘﯽ زﻣﺎﻧﯿﮑ ﻪ ﻣﻮس را در ﺻﻔﺤﻪ ‪ Drag‬ﻣﯽ ﮐﻨﯿﺪ، ﻧﯿﺰ‬ ‫ﭘﺎﺳﺨﮕﻮ ﺑﺎﺷﺪ. درﺑﺎره اﻳﻨﮑﻪ ﻏﯿﺮ ھﻤﺰﻣﺎﻧﯽ )آﺳﻨﮑﺮون( دﻗﯿﻘﺎ ﭼﻪ ﻣﻌﻨﺎﻳﯽ دارد؛ درﺑﺎره اﻳﻨﮑ ﻪ ﮐﺪ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ‬ ‫در ﺣﺎل اﺟﺮاﺳﺖ و ﻣﺘﻈﺮ ﭘﺎﺳ ﺦ ﺳﺮور ﺑﻪ درﺧﻮاﺳﺘﺶ ﻧﻤﯽ ﻣﺎﻧﺪ، ﻓﮑﺮ ﮐﻨﯿﺪ. ﺑﺎ ﭼﻪ ﻣﺸﮑﻼﺗﯽ درﮔﯿﺮ ﻣﯽ‬ ‫ﺷﻮﻳﺪ؟ ﭼﻪ زﻣﯿﻨﻪ ھﺎﻳﯽ اﺳﺖ ﮐﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺮاﻗﺐ ﺑﺎﺷﯿﺪ؟ و ﭼﮕﻮﻧﻪ ﻃﺮاﺣﯽ ﻓﺮم ھﺎی ﺷﻤﺎ ﺑﻪ ﻣﻨﻈﻮر ﺗﻮﺟﯿ ﻪ‬ ‫اﻳﻦ روش ﺟﺪﻳﺪ در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ، ﺗﻐﯿﯿﺮ ﺧﻮاھﺪ ﮐﺮد؟‬ ‫اﮔﺮ ﺷﻤﺎ ﺑﺮ روی اﻳﻦ ﻣﻮارد وﻗﺖ ﺑﮕﺬارﻳﺪ، ﺧﯿﻠﯽ ﺑﮫﺘﺮ از اﻳﻨﺴﺖ ﮐﻪ ﻣﻘﺪاری داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐ ﻪ ﺑﺘﻮاﻧﯿﺪ در ﺑﺮﻧﺎﻣﻪ‬ ‫ای ﮐﻪ واﻗﻌﺎ ﻧﻤﯽ داﻧﯿﺪ ﭼﻪ ﻣﯽ ﮐﻨﺪ، ﮐﭙﯽ و ‪ Paste‬ﻧﻤﺎﻳﯿﺪ. در ﻣﻘﺎﻟﻪ ﺑﻌﺪی، اﻳﻦ اﻳﺪه ھﺎ را در ﻋﻤﻞ ﺑﻪ ﮐﺎر ﻣﯽ‬ ‫ﺑﺮﻳﺪ و ﺟﺰﺋﯿﺎﺗﯽ را درﺑﺎره ﮐﺪی ﮐ ﻪ ﻧﯿﺎز دارﻳﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ای اﻳﻦ ﭼﻨﯿﻨﯽ ﮐﺎر ﮐﻨﺪ، ﺑ ﻪ ﺷﻤﺎ ﺧﻮاھﻢ ﮔﻔﺖ. ﺑﻨﺎﺑﺮاﻳﻦ ﺗﺎ‬ ‫آن ﻣﻮﻗﻊ از اﻣﮑﺎﻧﺎت ‪ Ajax‬ﻟﺬت ﺑﺒﺮﻳ ﺪ.‬ ‫ﻣﻨﺎﺑﻊ آﻣﻮزش‬ ‫•‬ ‫‪is one of the companies on the leading edge of user interface design; you Adaptive Path‬‬ ‫.‪can learn a ton about Ajax by perusing their pages‬‬ Jesse James GarrettIf you're curious about where the term Ajax came from, check out ) on Ajax. this one and his excellent articles (like • You can get a head start on the next article in this series, focusing on the XMLHttpRequest object, by checking out this • . excellent article on the XMLHttpRequest object • • Microsoft Developer Network's If you use Internet Explorer, you can get the scoop at the . XML Developer Center • (developerWorks, September Ajax for Java developers: Build dynamic Java applications 2005) introduces a groundbreaking approach to creating dynamic Web application experiences that solve the page-reload dilemma. • (developerWorks, October Ajax for Java developers: Java object serialization for Ajax 2005) shows you five ways to serialize data in Ajax applications. • (developerWorks, October 2005) is a tutorial for those Using Ajax with PHP and Sajax interested in developing rich Web applications that dynamically update content using Ajax and PHP. • Call SOAP Web services with AJAX, Part 1: Build the Web services client (developerWorks, October 2005) shows how to implement a Web browser-based SOAP Web services client using the Ajax design pattern. • (developerWorks, May 2005) details the Document Object XML Matters: Beyond the DOM Model as a method to build dynamic Web applications. • (developerWorks, November Build apps with Asynchronous JavaScript with XML, or AJAX 2005) demonstrates how to construct real-time-validation-enabled Web applications with AJAX. • (developerWorks, November Ajax for Java developers: A jax with Direct Web Remoting 2005) demonstrates how to automate the heavy-lifting of AJAX. • . surveys AJAX/JavaScript librariesThe OSA Foundation has a wiki that • details XMLHttpRequest (not to mention all kinds of object reference sectionXUL Planet's other XML objects, as well as DOM, CSS, HTML, Web Service, and Windows and Navigation objects. • detailing some of the basic Ajax principles. strategy white paperYou can read a nice • . Flickr.comSee one of the outstanding Ajax applications online at • , from Google, is another great example of Ajax revolutionizing Web applications. GMail • (O'Reilly Media, Inc., February 2006) takes the ideas outlined in this Head Rush Ajax article and series and brings them (and a lot more) to you in the innovative and awardwinning Head First format. • , 4th Edition (O'Reilly Media, Inc., November 2001) is a JavaScript: The Definitive Guide great resource for the JavaScript language and working with dynamic Web pages. • specializes in articles covering various Web-Web Architecture zoneThe developerWorks based solutions. • ‫ﮔﻔﺘﮕﻮ‬ .Participate in the discussion forum • is a great blog for all things Ajax. Ajax.NET Professional • . developerWorks blogsGet involved in the developerWorks community by participating in • ‫ﺗﺎﺛﯿﺮ ﺗﮑﻨﻮﻟﻮژی ﺟﺪﯾﺪ اﺟﮑﺲ ﺑﺮ ﺗﺠﺎرت اﯾﻨﺘﺮﻧﺖ‬ ‫ﻣﻘﺪﻣﮫ‬ ‫ﺗﺠﺮﺑ ﻪ ﺷﺎن در دﻧﯿﺎی وب و ﮐﺎر ﺑﺎ وب ﺳﺎﯾﺖ ھﺎ ی ﻣﺨﺘﻠﻒ، ﭼﮏ ﮐﺎرﺑﺮان اﯾﻨﺘﺮﻧﺖ اﻓﺮادی ھﺴﺘﻨﺪ ﮐ ﻪ ﻧﮫﺎﯾﺖ‬ ‫ﮔﺮوه ھﺎی اﯾﻨﺘﺮﻧﺘﯽ اﺳﺖ. اﻣﺎ اﻣﺮوزه آﻧﮫﺎ در دﻧﯿﺎی اﯾﻨﺘﺮﻧﺖ ﺑﻪ دﻧﺒﺎ ل ﮐﺎﻻھﺎی ﮐﺮدن اﯾﻤﯿﻞ ھﺎ وﯾﺎ ﻋﻀﻮﯾﺖ در‬ ‫ﺧﺮﯾﺪ ﮐﺎﻻﻳﯽ ﻣﻮردﻧﻈﺮﺷﺎن ﻣﯽ ﺑﺎﺷﻨﺪ. آﻧﮫﺎ در وب ﺳﺎﯾﺖ ھﺎ ﮔﺸﺘﻪ و در ﯾﮏ ﻓﺮوﺷﮕﺎه اﯾﻨﺘﺮﻧﺘﯽ ﺗﺼﻤﯿﻢ ﺑﻪ‬ ‫اﻋﺘﻤﺎد ﻧﻤﻮده و اﻏﻠﺐ ﭘﺲ از ﺧﺎص ﻣﯽ ﮔﯿﺮﻧﺪ. اﯾﻦ ﮐﺎرﺑﺮان ﺑﻪ ﺳﺨﺘﯽ ﺑﻪ وب ﺳﺎﯾﺖ ھﺎی ﺧﺮﯾﺪ و ﻓﺮوش آﻧﻼﯾﻦ‬ ‫ﻣﯽ ﺷﻮﻧﺪ. ﺑﺎزﮔﺸﺖ ﻣﺠﺪد ﯾﮏ ﮐﺎرﺑﺮ ﺑ ﻪ وب آﻏﺎز ﭘﺮوﺳﻪ ﺧﺮﯾﺪ، آن را در ﻧﯿﻤ ﻪ رھﺎ ﮐﺮده و از ﺳﺎﯾﺖ ﺧﺎرج‬ ‫ﺳﺎﯾﺘﯽ ﮐﻪ ﺗﺠﺮﺑﻪ ﻧﺎﺧﻮﺷﺎﯾﻨﺪ ﯾﮏ ﺧﺮﯾﺪ اﯾﻨﺘﺮﻧﺘﯽ را داﺷﺘﻪ اﺳﺖ، ﺑﺴﯿﺎر ﺑﻌﯿﺪ ﻣﯽ ﻧﻤﺎﯾﺪ .در اﯾﻦ ﻣﻘﺎﻟﻪ، ﺳﻌﯽ‬ ‫.دراداﻣﻪ روش ھﺎی ﻧﻮﯾﻦ رﻓﻊ اﯾﻦ ﻣﺸﮑﻼت ﺑﯿﺎن ﮔﺮدد ﺷﺪه اﺳﺖ دﻻﯾﻞ و‬ ‫ﻋﻠﺖ رھﺎ ﺷﺪن ﭘﺮوﺳﻪ ﺧﺮﯾﺪ، ﭘﺮداﺧﺖ و ارﺳﺎل ﺳﻔﺎرش ﭼﯿﺴﺖ؟ در اﮐﺜﺮ ﻣﻮارد ﮐﺎرﺑﺮان از زﻣﺎن ﻃﻮﻻﻧﯽ ﮐﻪ‬ ‫ﺑﺎﯾﺪ ﺻﺮف ﭘﺮﮐﺮدن ﯾﮏ ﻓﺮم و ‪ submit‬ﮐﺮدن آن ﮐﻨﻨﺪ، ﮔﻠ ﻪ داﺷﺘ ﻪ و ﺑﻪ ﺑﯿﺎﻧﯽ ﺳﺎده ﺗﺮ، ﺣﻮﺻﻠﻪ ﺷﺎن ﺳﺮ ﻣﯽ‬ ‫رود. اﯾﻦ اﻣﺮ در اﯾﺮان ﺑﺴﯿﺎر ﻣﻠﻤﻮس ﺗﺮ ﻣﯽ ﺑﺎﺷﺪ زﯾﺮا ﺳﺮﻋﺖ اﯾﻨﺘﺮﻧﺖ در ﮐﺸﻮر ﻣﺎ - ﺑﺪون اﻏﺮاق در اﮐﺜﺮ‬ ‫ﺷﮫﺮھﺎ - ﭘﺎﯾﯿﻦ ﻣﯽ ﺑﺎﺷﺪ و ﯾﺎ در ﻧﯿﻤﻪ راه، ﺑﻪ ﻃﻮر ﮐﺎﻣ ﻞ اﺗﺼﺎل ﺑﻪ اﯾﻨﺘﺮﻧﺖ ﻗﻄﻊ ﻣﯽ ﺷﻮد. ﻓﺮض ﮐﻨﯿﺪ در‬ ‫ﻣﺮﺣﻠﻪ ﺣﺴﺎس ورود اﻃﻼﻋﺎت ﮐﺎرت اﻋﺎری ﺧﻮد در ﻣﺪﺧﻞ ﭘﺮداﺧﺖ ﯾﮏ ﺑﺎﻧﮏ ﻣﯽ ﺑﺎﺷﯿﺪ و ﭘﺲ از زدن دﮐﻤﻪ‬ ‫"ﺗﺎﯾﯿﺪ" ﻧﺎﮔﮫﺎن ﺑﺎ اﯾﻦ ﭘﯿﻐﺎم روﺑﺮو ﻣﯽ ﺷﻮﯾﺪ:‬ ‫.‪The page cannot be displayed‬‬ ‫ﻣﻄﻤﺌﻨﺎ اﺣﺴﺎس ﺑﺪی ﺑﻪ ﺷﻤﺎ دﺳﺖ داده و ﺑﺮروی ﺑﺎزﮔﺸﺖ در ﻣﺮورﮔﺮ ﺧﻮد ﮐﻠﯿﮏ ﻣﯽ ﮐﻨﯿﺪ وﻟﯽ ﻣﺴﻠﻤﺎ ﮐﺎر‬ ‫ﺑﺪﺗﺮ ﻣﯽ ﺷﻮد!‬ ‫اﯾﻦ ﻓﻘﻂ ﯾﮏ ﻧﻤﻮﻧﻪ اﺳﺖ و ﻣﻤﮑﻦ اﺳﺖ ﺑﻪ دﻻﯾ ﻞ ﺧﺎﺻﯽ رخ دھﺪ اﻣﺎ ﺑﺎ ﻓﺮض اﯾﻨﮑﻪ ﺷﻤﺎ ﺑﺎ ﻣﻮﻓﻘﯿﺖ اﻃﻼﻋﺎت‬ ‫ﮐﺎرت اﻋﺘﺒﺎری ﺧﻮد را وارد ﮐﻨﯿﺪ، ﺑﺎﯾﺪ ﻣﺪﺗﯽ را ﻣﻨﺘﻈﺮ ﺑﻤﺎﻧﯿﺪ ﺗﺎ ﺻﻔﺤﻪ ‪ refresh‬ﺷﺪه و ﻧﺘﺎﯾﺞ را ﻣﺸﺎھﺪه ﻧﻤﺎﯾﯿﺪ.‬ ‫اﺟﮑﺲ ﺗﮑﻨﻮﻟﻮژی ﺟﺪﯾﺪی اﺳﺖ ﮐ ﻪ ﻣﺨﻔﻒ ﮐﻠﻤﻪ ‪ Asynchronous JavaScript And XML‬ﻣﯽ ﺑﺎﺷﺪ. در ﻣﻮرد‬ ‫اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﻣﻘﺎﻻت ﻣﺘﻌﺪدی وﺟﻮد دارد و ﻣﻌﺮﻓﯽ آن در اﯾﻦ ﻣﻘﻮﻟ ﻪ ﻧﻤﯽ ﮔﻨﺠﺪ. ﻣﻦ ﺗﻨﮫﺎ ﺗﺎﺛﯿﺮ اﯾﻦ ﻓﻦ آوری‬ ‫ﺟﺪﯾﺪ را ﺑﺮ اﻓﺰاﯾﺶ ﻓﺮوش آﻧﻼﯾﻦ ﯾﮏ ﺳﺎﯾﺖ ﺗﺠﺎرت اﯾﻨﺘﺮﻧﺘﯽ ﺗﻮﺿﯿﺢ ﻣﯽ دھﻢ .‬ ‫ﻧﮑﺘﻪ: اﺳﺘﻔﺎده از ﺗﮑﻨﻮﻟﻮژی ھﺎی ﺟﺪﯾﺪ ﻣﻤﮑﻦ اﺳﺖ ﺗﻌﺪاد ﮐﺎرﺑﺮان وب ﺳﺎﯾﺖ ﻣﺎ را ﮐﺎھﺶ دھﺪ.‬ ‫1. آﯾﺎ در ﺗﻤﺎم وﯾﺎ ﺣﺪاﮐﺜﺮ ﻣﺮورﮔﺮھﺎ و ‪ platform‬ھﺎ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ؟‬ ‫2. آﯾﺎ اﯾﻦ ﻗﺎﺑﻠﯿﺖ ﺑﺮ ﺗﺠﺮﺑﯿﺎت ﮐﺎرﺑﺮ ﺧﻮاھﺪ اﻓﺰود و وی راﺣﺖ ﺗﺮ ﻣﯽ ﺗﻮاﻧﺪ از ﺳﺎﯾﺖ اﺳﺘﻔﺎده ﮐﻨﺪ؟‬ ‫3. آﯾﺎ اﯾﻦ ﻗﺎﺑﻠﯿﺖ ﮐﺎرﺑﺮان را ﮔﯿ ﺞ ﺧﻮاھﺪ ﻧﻤﻮد؟‬ ‫و ﻣﻮارد دﯾﮕﺮی از اﯾﻦ دﺳﺖ .‬ ‫در اﺳﺘﻔﺎده از ﺗﮑﻨﻮﻟﻮژی اﺟﮑﺲ ﻣﯽ ﺗﻮان ﺑﺮای ﮐﺎرﺑﺮان ﻣﻄﺎﻟﺒﯽ ھﻤﺮاه ﺑﺎ ﺗﺼﺎوﯾﺮ ﺗﺤﺖ ﻋﻨﻮان "راھﻨﻤﺎ" -‬ ‫"آﻣﻮزش ﮐﺎر ﺑﺎ ﺗﮑﻨﻮﻟﻮژی ﺟﺪﯾﺪ" و ﻏﯿﺮه ﻓﺮاھﻢ آورد ﺗﺎ ﮐﺎرﺑﺮان ﺑﯽ ﺗﺠﺮﺑﻪ ﻣﺎ ﮔﯿﺞ ﻧﺸﻮﻧﺪ.‬ ‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ، ﺑﺎ اﺳﺘﻔﺎده از ﺗﮑﻨﻮﻟﻮزی اﺟﮑﺲ ﮐﺎرﺑﺮ ﻣﯽ ﺗﻮاﻧﺪ ﻧﺘﺎﯾﺞ ﺟﺴﺘﺠﻮی ﺧﻮد را در ﺑﻼدرﻧﮓ ﻣﺸﺎھﺪه‬ ‫ﮐﺮده و ﻣﻨﺘﻈﺮ ‪ refresh‬ﺷﺪن ﺻﻔﺤﻪ ﻧﻤﺎﻧﺪ. اﺟﮑﺲ ﮐﺎر ﺑﺎ وب ﺳﺎﯾﺖ ھﺎ را ﺗﺴﮫﯿﻞ ﮐﺮده و ﺳﺮﻋﺖ را اﻓﺰاﯾﺶ‬ ‫داده اﺳﺖ. ﻣﯽ ﺗﻮان در اﯾﻦ ﻣﻮرد - اﺳﺘﻔﺎده از اﺟﮑﺲ در ﯾﮏ وب ﺳﺎﯾﺖ ﺧﺮﯾﺪ و ﻓﺮوش اﯾﻨﺘﺮﻧﺘﯽ - ﺑﻪ ﻣﻮارد‬ ‫زﯾﺮ اﺷﺎره ﮐﺮد:‬ ‫1.‬ ‫2.‬ ‫3.‬ ‫4.‬ ‫ﻣﺸﺎھﺪه ﺑﻼدرﻧﮓ ﻧﺘﺎﯾﺞ ﺟﺴﺘﺠﻮ‬ ‫‪d rag and drop‬ﻣﺤﺼﻮﻻت ﺑﻪ ﺳﺒﺪ ﺧﺮﯾﺪ - ﮐﺎرﺑﺮ ﺑﺴﯿﺎر ﺳﺮﯾﻊ ﺗﺮ ﻣﯽ ﺗﻮاﻧﺪ ﺳﺒﺪ ﺧﺮﯾﺪ ﺧﻮد را ﻣﺪﯾﺮﯾﺖ‬ ‫ﮐﻨﺪ.‬ ‫زﯾﺮﻣﺠﻤﻮﻋﻪ ھﺎی ﻣﻨﻮھﺎی ﺳﺎﯾﺖ ﺑﺪون ‪ refresh‬ﺷﺪن ﺻﻔﺤﻪ ﺑﺎز ﺷﺪه و اﻃﻼﻋﺎت ﻻزم را ﺑﻪ ﮐﺎرﺑﺮ‬ ‫ﻣﯽ دھﻨﺪ.‬ ‫اﮔﺮ ﻣﺪﯾﺮ ﺳﺎﯾﺖ ﺑﺮای ﺑﺨﺶ ﭘﺸﺘﯿﺒﺎﻧﯽ از ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ Live Chat‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ، ﺳﺮﯾﻊ ﺗﺮ‬ ‫ﻣﺸﺘﺮی را ﺑﻪ ﭘﺎﺳﺦ ﺳﻮاﻻت رھﻨﻤﻮن ﺧﻮاھﺪ ﺷﺪ.‬ ‫اﯾﻦ ﻣﻮارد ﻧﻤﻮﻧﻪ ای از ﮐﻤﮏ ﺗﮑﻨﻮﻟﻮژی اﺟﮑﺲ ﺑﻪ ﺗﺠﺎرت اﯾﻨﺘﺮﻧﺘﯽ ﻣﯽ ﺑﺎﺷﺪ. ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺎ ﺗﻮﺳﻌﻪ ﺳﺎﯾﺖ‬ ‫ﺧﻮد و اﺳﺘﻔﺎده از اﯾﻦ ﻓﻦ آوری ﺑﻪ راﺣﺘﯽ ﮐﺎرﺑﺮان و وﺑﮕﺮدھﺎﯾﯽ ﮐﻪ ﺑ ﻪ ﺳﺎﯾﺖ ﺷﻤﺎ ﻣﯽ آﯾﻨﺪ ﺑﻪ ﻣﺸﺘﺮی ﺗﺒﺪﯾﻞ‬ ‫ﮐﺮده و ﻓﺮوش ﺧﻮد را ﺑﺎﻻ ﺑﺒﺮﯾ ﺪ. ﻣﻄﻤﺌﻨﺎ ﮐﺎرﺑﺮی ﮐﻪ ﻣﺎﯾﻞ ﺑﻪ ﺧﺮﯾﺪ اﯾﻨﺘﺮﻧﺘﯽ اﺳﺖ، در ﭼﻨﯿﻦ ﺳﺎﯾﺘﯽ ﺗﺠﺮﺑ ﻪ‬ ‫ﺧﻮﺑﯽ از ‪ ecommerce‬ﺧﻮاھﺪ داﺷﺖ و ھﺮﮔﺰ رﻗﺒﺎی ﺷﻤﺎ را ﺗﺮﺟﯿﺢ ﻧﺨﻮاھﺪ داد.‬ ‫‪ AjaxTagLib‬ﯾﮏ ‪ farmework‬ﺳﺎده و ﻣﻮﺛﺮ ﺑﺮای ﺗﻮﺳﻌﮫ دھﻨﺪﮔﺎن‪J2EE‬‬ ‫‪Ajax Tag Library‬ﻣﺠﻤﻮﻋﮫ ای از ﺗﮓ ھﺎی ‪ JSP‬اﺳﺖ ﮐﮫ اﺳﺘﻔﺎده از روش ‪ Ajax‬را در ﺻﻔﺤﺎت ‪ JSP‬آﺳﺎ ن ﮐﺮده اﺳﺖ.‬ ‫از آﻧﺠﺎﯾﯽ ﮐﮫ روش ‪ Ajax‬ﯾﮏ روش ﺳﻤﺖ ﮐﻼﯾﻨﺖ و ﺗﻤﺮﮐﺰ آ ن ﺑﺮ روی ﻣﺘﺪھﺎی ‪ JavaScript‬اﺳﺖ و اﯾﻨﮑﮫ اﮐﺜﺮ ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﺎن ﺳﻤﺖ‬ ‫ﺳﺮور ﻣﻌﻤﻮﻻ داﻧﺶ ﮐﻤﯽ درﺑﺎره ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﯽ ﺳﻤﺖ ﮐﻼﯾﻨﺖ دارﻧﺪ. اﯾﻦ ﻓﺮﯾﻢ ورک ﺑﮫ ‪ J2EE developer‬ھﺎ ﮐﻤﮏ ﻣﯿﮑﻨﺪ ﺗﺎ ﺑﺎ اﺳﺘﻔﺎده از‬ ‫اﯾ ﻦ ﻣﺠﻤﻮﻋﮫ ﺗﮓ ھﺎ، ﺑﮫ راﺣﺘﯽ و ﺑﺪون ﻧﻮﺷﺘﻦ ھﯿﭻ ﮐﺪی در ﺳﻤﺖ ﮐﻼﯾﻨﺖ، ﺑﮫ ﻧﺘﯿﺠﮫ ﻣﻄﻠﻮب ﺧﻮد ﺑﺮﺳﻨﺪ.‬ ‫ﺑﺮای اﺳﺘﻔﺎده از اﯾﻦ ﻣﺠﻤﻮﻋﻪ ﺗﮓ ھﺎ اﺣﺘﯿﺎج ﺑﻪ +4.1 ‪ JDK‬و ﯾﮏ ‪ Servlet Container‬ﻧﻈﯿﺮ ‪ tomcat‬دارﻳﺪ .‬ ‫ﻣﺮورﮔﺮھﺎی +0.5 ‪ Internet Explorer‬و +0.1 ‪ FireFox‬از اﯾﻦ ‪ framework‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﻨﺪ .‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫ﻣﺸﺎھﺪه ﻣﺜﺎﻟﮫﺎ ﺑ ﻪ ﺻﻮرت آن ﻻﯾﻦ‬ ‫داﻧﻠﻮد ﻣﺜﺎﻟﮫﺎ از‪SourceForge‬‬ ‫داﻧﻠﻮد ‪ Fra mework‬از‪SourceForge‬‬ ‫داﻧﻠﻮد ‪ Demo‬از ‪SourceForge‬‬ ‫اﯾﻦ ﻣﺠﻤﻮﻋﻪ ﮐﺘﺎﺑﺨﺎﻧﻪ ای ﺷﺎﻣﻞ ﺗﮓ ھﺎی زﯾﺮ ﻣﯽ ﺑﺎﺷﺪ:‬ ‫‪Autocomplete‬‬ ‫ﻧﻤﺎﯾﺶ درﻣﯽ آورد ﮐﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑ ﻪ ﻣﺘﻨﯽ ﮐﻪ درون آن ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد، را ﺑﻪ ‪ TextBox‬اﯾﻦ ﺗﮓ ﭘﺮ ﮐﺎرﺑﺮد ﯾﮏ‬ ‫را ﮐ ﻪ ﺑﺎ ﻣﺘﻦ ورودی ﻣﺸﺎﺑﻪ ﺑﺎﺷﺪ ﺑﻪ ﻋﻨﻮان ﻣﻮارد ﭘﯿﺸﻨﮫﺎدی اراﺋﻪ ﻣﯽ دھﺪ ﺗﺎ ﻣﺠﻤﻮ ﻋﻪ ای از ﻣﻘﺎدﯾﺮ‬ ‫‪ Tag‬اﯾﻦ ﺑﻨﻮﯾﺴﺪ، ﺑ ﻪ ﻃﻮر دﻗﯿﻖ ﺑ ﻪ ﺧﺎﻃﺮ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ، ‪ TexBox‬ﮐﺎرﺑﺮ آﻳﺘﻤﯽ را ﮐﻪ ﺑﺎﯾﺪ در اﯾﻦ درﺻﻮرﺗﯽ ﮐﻪ‬ ‫ﺑﻪ او ﮐﻤﮏ ﻣﯽ ﮐﻨﺪ ﺗﺎ از ﻣﺠﻤﻮﻋﻪ ﭘﯿﺸﻨﮫﺎدی، آﻳﺘﻢ ﻣﻮرد ﻧﻈﺮ ﺧﻮد را اﻧﺘﺨﺎب ﻧﻤﺎﻳﺪ.‬ ‫‪Callout‬‬ ‫اﯾﻦ ﺗﮓ ﯾﮏ ﮐﺎرﺑﺮد ﺳﺎده وﻟﯽ ﻣﻮﺛﺮ دارد. ﺑﻪ اﯾﻦ ﺻﻮرت ﮐﻪ ﺑﺎ وﺻ ﻞ ﺷﺪن ﺑﻪ ھﺮ ﺗﮓ ‪ HTML‬ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﮐﻪ‬ ‫ﺑﺎ ﮐﻠﯿﮏ ﮐﺮدن روی ﺗﮓ ‪ HTML‬ﻣﻮرد ﻧﻈﺮ ﯾﮏ ﺑﺎﻟﻮن ‪ popup‬ﺑﺎ ﻣﺘﻦ دﻟﺨﻮاه ﻧﻤﺎﯾﺶ داده ﺷﻮد.‬ ‫‪HTML Content Replace‬‬ ‫اﯾﻦ ‪ Tag‬ﻣﺤﺘﻮای ﯾﮏ ‪ Content Area‬ھﻤﺎﻧﻨﺪ ﺗ ﮓ ‪ DIV‬ﯾﺎ ﻏﯿﺮه را ﺑﺎ ﮐﻠﯿﮏ ﮐﺮدن ﯾﮏ ‪ link‬ﯾﺎ ‪ image‬ﯾﺎ ھﺮ ﺗﮓ‬ ‫‪html‬دﯾﮕﺮی ﺗﻐﯿﯿﺮ ﻣﯿﺪھﺪ.‬ ‫ﻗﺒﻞ از ﮐﻠﯿﮏ‬ ‫‪!Error‬‬ ‫ﺑﻌﺪ از ﮐﻠﯿﮏ‬ ‫‪!Error‬‬ ‫‪Portlet‬‬ ‫ﺧﺐ اﯾﻦ ھﻢ ﻳﮏ ‪ Tag‬ﺑﺮای ‪ Portal developer‬ھﺎ. اﯾﻦ ‪ Tag‬ﯾﮏ ﭘﺮﺗﻠﺖ آﺟﺎﮐﺴﯽ را ﺑ ﻪ ﻧﻤﺎﯾﺶ در ﻣﯽ آورد ﮐ ﻪ‬ ‫ﺧﻮدش ھﺮ ﭼﻨﺪ ﺛﺎﻧﯿﻪ ﺑ ﻪ ﻃﻮر ﺧﻮدﮐﺎر ‪ refresh‬ﻣﯽ ﺷﻮد.‬ ‫‪Select/Dropdown‬‬ ‫ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺗﮓ ﻗﺎدرﯾﺪ ﻓﯿﻠﺪ ھﺎی ﯾﮏ ‪ dropdown‬را ﺑﺎ ﺗﻮﺟ ﻪ ﺑﻪ اﻧﺘﺨﺎب ﻓﯿﻠﺪ ھﺎی ‪ d ropdoewn‬دﯾﮕﺮ‬ ‫ﺗﻐﯿﯿﺮ ﺑﺪھﯿﺪ.‬ ‫ﻗﺒﻞ از اﻧﺘﺨﺎب‬ ‫‪Select/Dropdown‬‬ ‫ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺗﮓ ﻗﺎدرﯾﺪ ﻓﯿﻠﺪ ھﺎی ﯾﮏ ‪ dropdown‬را ﺑﺎ ﺗﻮﺟ ﻪ ﺑﻪ اﻧﺘﺨﺎب ﻓﯿﻠﺪ ھﺎی ‪ d ropdoewn‬دﯾﮕﺮ‬ ‫ﺗﻐﯿﯿﺮ ﺑﺪھﯿﺪ.‬ ‫ﻗﺒﻞ از اﻧﺘﺨﺎب‬ ‫ﺑﻌﺪ از اﻧﺘﺨﺎب‬ ‫‪Tab Panel‬‬ ‫اﯾﻦ ھﻢ ﺗﮕﯽ ﺑﺮای ﻧﻤﺎﯾﺶ ‪ Tab Panel‬ھﺎی آﺟﺎﮐﺴﯽ‬ ‫‪!Error‬‬ ‫‪Toggle‬‬ ‫اﯾﻦ ‪ Tag‬ﺑﺮای ﻧﻤﺎﯾﺶ و ﺗﻐﯿﯿﺮ ﺣﺎﻟﺖ ‪ True‬و ‪ False‬ﺑﮑﺎر ﺑﺮده ﻣﯽ ﺷﻮد‬ ‫ﻗﺒﻞ از ﮐﻠﯿﮏ‬ ‫ﺑﻌﺪ از ﮐﻠﯿﮏ‬ ‫‪Update Field‬‬ ‫اﯾﻦ ‪ Tag‬ﻣﻘﺎدﯾﺮ ﯾﮏ ﯾﺎ ﭼﻨﺪ ﻓﯿﻠﺪ را ﺑﺎ ﺗﻮﺟ ﻪ ﺑﻪ ﻣﻘﺪار وارد ﺷﺪه در ﯾ ﻪ ﻓﯿﻠﺪ دﯾﮕﺮ ﺗﻐﯿﯿﺮ ﻣﯽ دھﺪ.‬ ‫ﻗﺒﻞ از وارد ﮐﺮدن ﻣﻘﺪا ر‬ ‫ﺑﻌﺪ از وارد ﮐﺮدن ﻣﻘﺪار و ﮐﻠﯿﮏ ﮐﺮدن دﮐﻤﮫ‪C alculate‬‬ AjaxTagLib‫راھﻨﻤﺎی اﺳﺘﻔﺎده از‬ ‫ ﮐﭙﯽ ﻧﻤﺎﯾﯿﺪ‬WEB_INF/lib ‫ را در ﻣﺴﯿﺮ‬a jaxtags.jar ‫1. ﺑﺮای ﺷﺮوع‬ ‫ ﻣﻌﺮﻓﯽ ﮐﻨﯿﺪ. اﯾﻦ ﮐﺎر ﺑﺮای‬web.xml ‫ را ﺑﻪ ﺻﻮرت زﯾﺮ در‬ajaxtags.tld ‫ ﯾﺎ ھﻤﺎن‬taglib ‫2. ﻓﺎﯾﻞ ﺗﻌﺮﯾﻒ‬ .‫ اﻟﺰاﻣﯽ ﻧﯿﺴﺖ‬JSP 2.0 ‫ﮐﺎرﺑﺮھﺎی‬ <taglib> <uri>http://ajaxtags.org/tags/ajax</uri> <location>/WEB_INF/ajaxtags.tld</location> </taglib> web application ‫ داﻧﻠﻮد ﻣﯽ ﺷﻮد را ﺑﻪ‬framework ‫ ﻣﻮردﻧﯿﺎز ﮐﻪ ھﻤﺮاه ﺑﺎ اﯾﻦ‬JavaScript ‫1. ﻓﺎﯾﻞ ھﺎی‬ .‫ﺧﻮد اﺿﺎﻓﻪ ﮐﻨﯿﺪ‬ • • • Prototype 1.4.0 : Prototype 1.4.0.js Scriptaculous .1.5.1 : scriptaculous.js, builder.js, controls.js, dragdrop.js, effects.js, slider.js OverLIBMWS (Optional, for ajax: callout only): overlibmws.js ‫ اﺳﺖ ﮐﻪ ﺗﻮﺳﻂ ﺷﺮﮐﺖ‬Ajax ‫اﯾﻦ ﻣﺠﻤﻮﻋﻪ از ﺟﺎوا اﺳﮑﺮﯾﭙﺖ ھﺎ از ﻣﻮارد ﻣﻄﺮح در زﻣﯿﻨﻪ اﺳﺘﻔﺎده از ﺗﮑﻨﯿﮏ‬ .‫ھﺎی ﻣﺨﺘﻠﻒ ﺗﻮﺳﻌﻪ ﯾﺎﻓﺘ ﻪ و در ﻓﺮﻳﻢ ورک ھﺎ ی ﻣﺨﺘﻠﻔﯽ از آﻧﮫﺎ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‬ ‫ اﯾﻦ ﻓﺎﯾ ﻞ ھﺎ ﺑﯿﻨﺪازﻧﺪ. ﻣﻄﻤﺌﻨﺎ ﻣﯽ ﺗﻮاﻧﺪ‬source ‫ ھﺎ اﯾﻨﺴﺖ ﮐﻪ ﺣﺘﻤﺎ ﻧﮕﺎھﯽ ﺑﺮ‬A jax developer ‫ﺗﻮﺻﯿﻪ ﻣﻦ ﺑﻪ‬ .‫ﻣﻔﯿﺪ و اﻟﮫﺎم ﺑﺨﺶ ﺑﺎﺷﺪ‬ ‫ﺧﻮب ﺣﺎ ل ﺑﻪ ﺳﻤﺖ ﺳﺮور ﻣﯽ ﭘﺮدازﻳﻢ‬ ‫ ھﺎﯾﯽ‬Helper Class ‫ ، ﮐﻼس ھﺎی ﮐﻤﮑﯽ ﯾ ھﻤﺎن‬text‫ و‬XML, HTML ‫ ﺑﻪ ﻓﺮﻣﺖ ھﺎی‬Response ‫ﺑﺮای اﯾﺠﺎد‬ .‫ در ﻧﻈﺮ ﮔﺮﻓﺘ ﻪ ﺷﺪه اﺳﺖ‬framework ‫در اﯾﻦ‬ . ‫ واﻗﻊ ﺷﺪه اﻧﺪ‬package ‫ در اﯾﻦ‬AjaxXmlBuilder ‫ و‬AjxHtmlHelper ‫ ﺑﺎ ﻧﺎم ھﺎی‬helper ‫ﻓﺎﯾﻞ ھﺎی‬ org.ajaxtags.helpers A jaxXmlBuilder‫ﻧﻤﻮﻧ ﻪ اﺳﺘﻔﺎده از‬ // Get maker from your service bean CarService service = new CarService(); List list = service.getModelsByMake(make); return new AjaxXmlBuilder().addItems(list, "model",make").toString(); .‫ﺧﺮوﺟﯽ ﺗﻮﻟﯿﺪ ﺷﺪه ﺑﻪ ﺻﻮرت زﯾﺮ ﻣﯽ ﺑﺎﺷﺪ‬ <?xml version="1.0" encoding="UTF-8"?> <ajax-response> <response> <item> <name>Expedition</name> <value>Ford</value> </item> <item> <name>Focus</name> <value>Ford</value> </item> ... </response> </ajax-response> XML‫ ﺑ ﻪ ﻓﺮﻣﺖ‬Response ‫ﻧﻤﻮﻧ ﻪ ای از‬ <?xml version="1.0" encoding="UTF-8"?> <ajax-response> <response> <item> <name>Record 1</name> <value>1</value> <item> <name>Record 2</name> <value>2</value> </item> <item> <name>Record 3</name> <value>3</value> </item> </response> </ajax-response> </item> text‫ ﺑ ﻪ ﻓﺮﻣﺖ‬Response ‫ﻧﻤﻮﻧ ﻪ ای از‬ Record 1,1 Record 2,2 Record 3,3 JSP ‫آﻣﺎده ﮐﺮدن ﻓﺎﯾﻞ‬ ‫ در ﺻﻔﺤﻪ‬taglib ‫ﻣﻌﺮﻓﯽ ﮐﺮدن‬ ‫اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾ ﻞ ھﺎی ﺟﺎوا اﺳﮑﺮﯾﭙﺖ ﻣﻮرد ﻧﯿﺎز ﺑﻪ ﺻﻔﺤﻪ‬ ‫ ﻣﻮرد ﻧﯿﺎز ﺑﻪ ﺻﻔﺤﻪ‬style ‫اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾ ﻞ ھﺎی‬ ‫ﻧﻮﺷﺘﻦ ﮐﺪ ھﺎی ﻣﻮرد ﻧﯿﺎز ﺻﻔﺤﻪ‬ ‫اﺿﺎﻓﻪ ﮐﺮدن آﺟﺎﮐﺲ ﺗﮓ ھﺎی ﻣﻮرد ﻧﯿﺎز ﺑﻪ ﺻﻔﺤﻪ‬ .1 .2 .3 .4 .5 JSP‫ﯾﮏ ﺻﻔﺤﻪ ﻧﻤﻮﻧﻪ‬ <%@ taglib uri="http://ajaxtags.org/tags/ajax" prefix="ajax" %> <html> <head> <title>AJAX JSP Tag Library</title> <script <script <script <script type="text/javascript" type="text/javascript" type="text/javascript" type="text/javascript" xsrc="prototype.1.4.0.js"></script> xsrc="scriptaculous.js"></script> xsrc="overlibmws.js"></script> xsrc="ajaxtags-1.2.js"></script> <link type="text/css" rel="stylesheet" xhref="ajax.css" /> </head> <body> <form> Make: <select id="make" name="make"> <option value="">Select make</option> <c:forEach items="${makes}" var="make"> <option value="${make}">${make}</option> </c:forEach> </select> Model: <select id="model" name="model"> <option value="">Select model</option> </select> </form> <ajax:select baseUrl="${pageContext.request.contextPath}/GetCarModel.view" source="make" target="model" parameters="make={make}" /> </body> </html> .‫ ھﺎ را ﺑﺮ ﻋﮫﺪه دارد‬Request ‫ﺧﻮب، ﺣﺎﻻ ﻣﯿﺮﺳﯿﻢ ﺑﻪ ﻓﺎﯾﻞ اﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ﮐﻪ وﻇﯿﻔﻪ رﺳﯿﺪﮔﯽ و ﭘﺎﺳﺦ دادن ﺑﻪ‬ ‫( ﮐﻪ در اﯾﻦ ﻓﺮﻳﻢ ورک ﮔﻨﺠﺎﻧﺪه ﺷﺪه ﺑﻪ ﻧﺎم‬abstract) ‫ﺑﺪﯾﻦ ﻣﻨﻈﻮر ﮐﺎرﺑﺮان ﺑﺎﯾﺪ از ﯾﮏ ﮐﻼس اﻧﺘﺰاﻋﯽ‬ ‫ ارث ﺑﺮی ﮐﺮده و ﻣﺘﺪ‬BaseAjaxAction ‫ از‬strust ‫و ﮐﺎرﺑﺮان‬BaseAjaxServlet .‫آن را ﭘﯿﺎده ﺳﺎزی ﮐﻨﻨﺪ‬getXmlContent(HttpServletRequest, HttpServletResponse) ‫ﺑﺮای ﮐﺴﺎﻧ ﯽ ﮐﮫ ﺑﮫ ﻃﻮر ﮐﺎﻣ ﻞ ﺑﺎ ﺟﺎوا اﺳﮑﺮﯾﭙﺖ ﻗﻄﻊ راﺑﻄﮫ ﻧﮑﺮدﻧﺪ‬ ‫ اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ، ﺟﺪا ﮐﺮدن ﻣﺘﺪھﺎی ﭘﺮدازش ﭘﺎﺳﺦ ﯾﺎ‬framework ‫ﯾﮑﯽ از ﺟﺪﯾﺪﺗﺮﯾﻦ اﻣﮑﺎﻧﺎﺗﯽ ﮐ ﻪ ﺑﻪ اﯾﻦ‬ ‫ﻣﯽ ﺑﺎﺷﺪ؛ ﺑﻪ اﯾﻦ ﻣﻔﮫﻮم ﮐﻪ ﮐﺎرﺑﺮ را ﻗﺎدر ﻣﯽ ﺳﺎزد ﺗﺎ در ﺻﻮرت ﻧﯿﺎز ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻓﺮﻣﺖ‬Response Parser ﭘﯿﺶ ﻓﺮض‬parser ‫ ﺧﻮد را ﺗﻐﯿﯿﺮ دھﺪ. در اﯾﻦ ﻓﺮﻳﻢ ورک، ﭼﻨﺪ‬parser ‫ ، ﻧﻮع‬Response‫ﺧﺮوﺟﯽ ﯾﺎ ھﻤﺎن ﻓﺮﻣﺖ‬ .‫در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ ﮐﻪ در ﺻﻮرت ﻧﯿﺎز ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﻗﺎﺑﻞ ﺟﺎﯾﮕﺰﯾﻨﯽ ﻣﯽ ﺑﺎﺷﺪ‬ ‫ ﻣﻄﻤﺌﻨﺎ ﺑﺎ ﻣﺮاﺟﻌ ﻪ ﺑﻪ ﻣﺴﺘﻨﺪات‬A jaxTagLib ‫ آﺷﻨﺎﯾﯽ ﺑﮫﺘﺮ و دﻗﯿﻖ ﺗﺮی ﺑﺎ اﯾﻦ‬framework .‫ﭘﯿﺪا ﺧﻮاھﯿﺪ ﮐﺮد‬ ‫اﯾﻦ ﻣﺠﻤﻮﻋﻪ، ﺳﺎﺧﺘﺎر ﺑﻪ ﻧﺴﺒﺖ ﺳﺎده آن ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﺑﺮای ﮐﺎرﺑﺮان اﻣﮑﺎن ا ﯾﮑﯽ از ﻣﮫﻤﺘﺮﯾﻦ ﺧﺼﻮﺻﯿﺎت‬ .‫ﺗﻮﺳﻌﻪ آن را ﻓﺮاھﻢ ﺳﺎﺧﺘﻪ اﺳﺖ‬ ‫‪AjaxAC‬ﻳﻚ ﻓﺮﻳﻢ ورك ‪ php‬ﺑﺎز ﻣﺘ ﻦ ﺑﺮاي ‪Ajax‬‬ ‫اﻳﻦ روزا اﮔﻪ ﺑﺨﻮاي ﺗﻮ ﻣﺒﺎﺣﺚ ‪ web application‬ﻛﻼس ﺑﺬاري ﺑﺎﻳﺪ ﻛﻠﻤﻪ ‪ Ajax‬رو ھﻢ ورد زﺑﻮﻧﻤﻮن ﻛﻨﯿﻢ ﺗﺎ‬ ‫اﻃﺮاﻓﯿﺎﻧﻤﻮن ﺣﺪاﻗ ﻞ ﺑﺪوﻧﻦ ﻛﻪ ﻳﻪ ﭼﯿﺰاﺋﻲ ﺣﺎﻟﯿﻤﻮﻧﻪ.‬ ‫ھﺪف از ﺑﯿﺎن اﻳﻦ ﻣﻄﻠﺐ ﻣﻌﺮﻓﻲ ‪ AjaxAc‬ﺑﻮد ﻛ ﻪ اﻳﻦ روزا ﻣﺚ ﺧﯿﻠﻲ ﺗﻜﻨﻮﻟﻮژي ھﺎي دﻳﮕﻪ ﻃﺮاﻓﺪاران زﻳﺎدي رو‬ ‫ﺟﺬب ﺧﻮدش ﻛﺮده.‬ ‫ﺣﺎﻻ اﻳﻦ ‪ AjaxAc‬ﭼﻲ ھﺴﺖ؟‬ ‫‪AjaxAc‬ﻳﻚ ﻓﺮﻳﻢ ور ك ﺑﺎز ﻣﺘﻦ ھﺴﺘﺶ ﻛﻪ ﺑﺎ‪ php‬ﻧﻮﺷﺘ ﻪ ﺷﺪه و ﺑﺮاي اﻳﺠﺎد و ﺗﻮﺳﻌﻪ ‪Ajax‬‬ ‫‪Applications‬ﺑﻜﺎر ﻣﻲ رود.‬ ‫ﺣﺘﻤﺎ در ﻳﺎھﻮ دﻳﺪه اﻳﺪ ﮐﻪ ﺑﺎ ﺗﺎﻳﭗ ﺣﺮوف اول ﻧﺎم دوﺳﺘﺎﻧﺘﺎن ﻧﺎم ﭼﻨﺪ ﻧﻔﺮ از آﻧﮫﺎ از دﻳﺘﺎﺑﯿﺲ ﻟﻮد ﺷﺪه و ﺑ ﻪ ﺷﻤﺎ‬ ‫ﻧﻤﺎﻳﺶ داده ﻣﯽ ﺷﻮد. اﻳﻨﮑﺎر ﺑﺪون اﻳﻨﮑﻪ ﺻﻔﺤﻪ ﺑﺎرﮔﺬاری ﻣﺠﺪد ﺷﻮد اﻧﺠﺎم ﻣﯽ ﺷﻮد. ﺑﻪ زﺑﺎن ﺳﺎده ﺗﺮ‬ ‫آژاﮐﺲ ﺗﮑﻨﻮﻟﻮژی ای اﺳﺖ ﮐﻪ در آن ﺑﺎ ﻟﻮد ﺷﺪن ﻳﮏ ﺻﻔﺤﻪ، اﻣﮑﺎن ﻓﺮاﺧﻮاﻧﯽ ﺑﺮﻧﺎﻣﻪ ھﺎی ﺳﻤﺖ ﺳﺮور ﺑﺪون‬ ‫ﺑﺎرﮔﺬاری و ﻟﻮد ﻣﺠﺪد ﺻﻔﺤ ﻪ وﺟﻮد دارد .ﺑﺮﻧﺎﻣﻪھﺎی آژاﮐﺲ راھﯽ ﺑﺮای ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪھﺎی اﻳﻨﺘﺮاﮐﺘﯿﻮﺗﺮ در وب‬ ‫ﻓﺮاھﻢ ﮐﺮده اﻧﺪ .ﺑﺮای اﻳﻨﮑﺎر ﮐﺎﻓﯿﺴﺖ ﻳﮏ ﻋﻨﺼﺮ ﻓﻌﺎل ﮐﻪ ﻗﺎﺑﻞ ﻓﺮاﺧﻮاﻧﯽ در ﺟﺎوااﺳﮑﺮﻳﭙﺖ ﺑﺎﺷﺪ ﺑﺘﻮاﻧﺪ ﺗﺤﺖ‬ ‫ﮐﻨﺘﺮل ﺟﺎوااﺳﮑﺮﻳﭙﺖ ﺑﺎ ﺳﺮور ﺗﻤﺎس ﮔﺮﻓﺘ ﻪ و اﻃﻼﻋﺎت درﺧﻮاﺳﺖ ﮐﻨﺪ. ﺑﻌﻨﻮان ﻣﺜﺎل اﻳﻦ ﻋﻨﺼﺮ ﻓﻌﺎل ﻣﯽ ﺗﻮاﻧﺪ‬ ‫ﻳﮏ ﺑﺮﻧﺎﻣﻪ ‪ PHP‬ﻳﺎ ‪ ASP‬ﻳﺎ ... را ﻓﺮاﺧﻮاﻧﯽ ﮐﺮده و ﻧﺘﺎﻳﺞ آن را از ﻃﺮﻳﻖ ﺟﺎوااﺳﮑﺮﻳﭙﺖ در ﺻﻔﺤﻪ ﺟﺎری ﺗﺎﺛﯿﺮ‬ ‫دھﺪ. ﻋﻨﺼﺮ ﻓﻌﺎ ل ﻗﺒ ﻞ از ﻣﻌﺮﻓﯽ آژاﮐﺲ ﻣﯽ ﺗﻮاﻧﺴﺖ ﻳﮏ ‪ ActiveX‬ﻳﺎ ﺟﺎوا اﭘﻠﺖ ﺳﺎده ﺑﺎﺷﺪ اﻣﺎ اﮐﻨﻮن اﻳﻦ‬ ‫ﻋﻨﺼﺮ آﺑﺠﮑﺖ ‪ XMLHttpRequest‬اﺳﺖ ﮐﻪ در ﻣﺠﻤﻮﻋ ﻪ اﺑﺰارھﺎی ‪ XML‬ﻣﺎﻳﮑﺮوﺳﺎﻓﺖ ﻗﺮار دارد.‬ ‫اﻳﻦ ﻓﺮﻳﻢ ورك ﻣﻲ ﺗﻮﻧﯿﺪ از اﻳﻨﺠﺎ داﻧﻠﻮد ﻧﻤﺎﺋﯿﺪ‬ ‫ﺑﺮای ﮐﺴﺐ اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ ﺳﺮی ﺑ ﻪ اﻳﻨﺠﺎ ﺑﻧﯿ ﺪ‬ ‫ﻣﻨﺒﻊ : /‪http://iranphp.net‬‬ ‫ﭘﺪﻳﺪه اﻧﻘﻼﺑ ﻲ ‪Ajax‬‬ ‫اﺷﺎره :‬ ‫اﮔﺮ ﺑﺮﻧﺎﻣ ﻪ ﻧﻮﻳﺲ وب ھﺴﺘﯿﺪ، ﻻﺑﺪ ﺧﺒﺮ دارﻳﺪ ﻛﻪ اﻳﻦ روزھﺎ ھﻤﻪ درﺑﺎره ‪ Ajax‬ﺻﺤﺒﺖ ﻣﻲ ﻛﻨﻨﺪ. ﺑﻌﻀﻲ‬ ‫ﻣﻌﺘﻘﺪﻧﺪ ‪ Ajax‬ﻳﻜﻲ از ارﻛﺎن ﻓﻨﻲ ﻣﻮج ﺟﺪﻳﺪي اﺳﺖ ﻛ ﻪ ﺑﻪ 0.2 ‪ Web‬ﻣﻌﺮوف ﺷﺪه اﺳﺖ و اﻧﺠﻤﻦ ھﺎ و‬ ‫ﺗﺮﻳﺒﻮن ھﺎي آﻧﻼﻳﻦ ﻣﻤﻠﻮ از ﻣﻘﺎﻻت و اﻇﮫﺎرﻧﻈﺮھﺎي ﻣﺮﺑﻮط ﺑﻪ ‪Ajax‬اﺳﺖ‬ ‫اﮔﺮ ﺑﺮﻧﺎﻣ ﻪ ﻧﻮﻳﺲ وب ھﺴﺘﯿﺪ، ﻻﺑﺪ ﺧﺒﺮ دارﻳﺪ ﻛﻪ اﻳﻦ روزھﺎ ھﻤﻪ درﺑﺎره ‪ Ajax‬ﺻﺤﺒﺖ ﻣﻲ ﻛﻨﻨﺪ. ﺑﻌﻀﻲ‬ ‫ﻣﻌﺘﻘﺪﻧﺪ ‪ Ajax‬ﻳﻜﻲ از ارﻛﺎن ﻓﻨﻲ ﻣﻮج ﺟﺪﻳﺪي اﺳﺖ ﻛ ﻪ ﺑﻪ 0.2 ‪ Web‬ﻣﻌﺮوف ﺷﺪه اﺳﺖ. ﺑﻌﻀﻲ از‬ ‫ﺳﺎﻳﺖھﺎي ﺑﺰرگ ﻣﺎﻧﻨﺪ ﻳﺎھﻮ و ﮔﻮﮔﻞ ھﻢاﻛﻨﻮن ‪ Ajax‬را ﺑﻪ ﺧﺪﻣﺖ ﮔﺮﻓﺘﻪاﻧﺪ، اﻧﺠﻤﻦ ھﺎ و ﺗﺮﻳﺒﻮن ھﺎي آﻧﻼﻳﻦ ﻣﻤﻠﻮ‬ ‫از ﻣﻘﺎﻻت و اﻇﮫﺎرﻧﻈﺮھﺎي ﻣﺮﺑﻮط ﺑﻪ ‪Ajax‬اﺳﺖ و ھﻤﺰﻣﺎن ﺗﻼشھﺎي وﺳﯿﻌﻲ در ﺟﺮﻳﺎن اﺳﺖ ﺗﺎ اﻳﻦ ﻓﻨﺎوري‬ ‫ﺟﺪﻳﺪ ھﻤﭽﻨﺎن ﺑﻪ ﺻﻮرت اﭘﻦ ﺳﻮرس ﺑﺎﻗﻲ ﺑﻤﺎﻧﺪ و اﻧﺤﺼﺎري ﻧﺸﻮد .‬ ‫‪Ajax‬ﭼﯿﺴﺖ؟‬ ‫واژه ‪ Ajax‬ﺑﺎ ﺗﻠﻔﻆ< ايﺟﻜﺲ >ﻳﺎ< ايژاﻛﺲ >ﺳﺮﻧﺎم ﻋﺒﺎرت ‪ Asynchronous JavaScript and XML‬و ﺑﻪ‬ ‫ﻣﻌﻨﻲ< ﺗﺮﻛﯿﺐ ﻧﺎﻣﺘﻘﺎرن ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ‪>XML‬اﺳﺖ. ﻣﺎھﯿﺖ ﺻﻔﺤﺎت وب و ﭘﺮوﺗﻜﻞ ‪ HTTP‬ﺑﻪ ﮔﻮﻧﻪاي اﺳﺖ‬ ‫ﻛ ﻪ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل وﻗﺘﻲ درﺣﺎل وبﮔﺮدي ھﺴﺘﯿﻢ، ﺑ ﻪ ازاي ھﺮ ﻛﻨﺶ و واﻛﻨﺶ ﻣﯿﺎن ﻣﺎ و ﺳﺎﻳﺘﻲ ﻛﻪ در ﺣﺎل‬ ‫ﻛﺎر ﺑﺎ آن ھﺴﺘﯿﻢ، ﻛﻞ ﻳﻚ ﺻﻔﺤ ﻪ وب از ﻧﻮ ﺑﺎرﮔﺬاري و ﺗﺎزهﺳﺎزي )‪ (refresh‬ﻣﻲﺷﻮد .‬ ‫ايﺟﻜﺲ ﻓﻨﺎوري ﺟﺪﻳﺪي اﺳﺖ ﻛ ﻪ ﺗﻐﯿﯿﺮ ﻣﺤﺴﻮﺳﻲ را در اﻳﻦ ﺳﻨﺎرﻳﻮ ﺑﻪ وﺟﻮد ﻣﻲآورد؛ ﺑﻪ اﻳﻦ ﺗﺮﺗﯿﺐ ﻛﻪ ﺑ ﻪ‬ ‫ﺟﺎي ﺑﺎرﮔﺬاري ﻣﺠﺪد ﻛﻞ ﺻﻔﺤﻪ، ﻓﻘﻂ ﻗﺴﻤﺘﻲ ﺗﻐﯿﯿﺮ ﻣﻲﻛﻨﺪ ﻛﻪ ﻗﺮار اﺳﺖ اﻃﻼﻋﺎت ﺟﺪﻳﺪ را ﺑﻪ ﻧﻤﺎﻳﺶ درآورد‬ ‫و ﻛﻠﯿﻪ ﻋﻤﻠﯿﺎت ارﺳﺎل اﻃﻼﻋﺎت و درﻳﺎﻓﺖ ﻧﺘﺎﻳ ﺞ در ﭘﺸﺖ ﺻﺤﻨ ﻪ اﻧﺠﺎم ﻣﻲﺷﻮد. در ﻧﺘﯿﺠﻪ ھﯿﭻﮔﺎه ﺻﻔﺤﻪ‬ ‫ﺳﻔﯿﺪ و ﺧﺎﻟﻲ وب در ﻓﻮاﺻﻞ ﻛﻨﺶ و واﻛﻨﺶھﺎ ي ھﻨﮕﺎم ﻛﺎر ﺑﺎ ﻣﺮورﮔﺮ دﻳﺪه ﻧﻤﻲﺷﻮد و اﺣﺴﺎﺳﻲ ﻣﺸﺎﺑ ﻪ‬ ‫ﺗﺠﺮﺑﻪ ﻛﺎر ﺑﺎ ﻳﻚ ﻧﺮماﻓﺰار دﺳﻜﺘﺎپ ﺑﻪ ﻛﺎرﺑﺮ دﺳﺖ ﻣﻲدھﺪ.‬ ‫ﺟﺎدوي ايﺟﺎﻛﺲ ﭼﯿﺰي ﻧﯿﺴﺖ ﺟﺰ ﻳﻚ ﻓﻜﺮ ﺑﻜﺮ و آن ھﻢ ﺗﺮﻛﯿﺐ ﻛﺮدن ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ‪ XML‬در ﻗﺎﻟﺐ ﻳﻚ‬ ‫ﻣﻮﺟﻮد ﻧﺮماﻓﺰاري ﺟﺪﻳﺪ .‬ ‫اﺻﻄﻼح ‪ Ajax‬را اوﻟﯿﻦ ﺑﺎر ﻛﺎرﺷﻨﺎﺳﻲ از ﺷﺮﻛﺖ ‪ Adaptive Path‬ﺑ ﻪ ﻧﺎم ﺟﺴﻲ ﺟﯿﻤﺰﮔﺮت در ﻣﻘﺎﻟﻪاي ﺑﺎ‬ ‫ﻋﻨﻮان< ايﺟﻜﺲ؛ رھﯿﺎﻓﺖ ﺟﺪﻳﺪي در ﺑﺮﻧﺎﻣﻪ ھﺎي ﺗﺤﺖ وب >ﻣﻄﺮح ﻛﺮد و ﺧﻠﻲ ﺳﺮﻳﻊ ﻣﻮرد اﺳﺘﻘﺒﺎ ل‬ ‫ﮔﺴﺘﺮده ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن وب در ﺳﺮاﺳﺮ ﺟﮫﺎن ﻗﺮارﮔﺮﻓﺖ. اﻋﺘﻘﺎد ﻋﻤﻮﻣﻲ اﻳﻦ اﺳﺖ ﻛ ﻪ ﺗﺎرﻳﺨﭽ ﻪ ﺑﻪ ﻛﺎرﮔﯿﺮي‬ ‫ﺗﻜﻨﯿﻚ ﻣﺬﻛﻮر ﺑﻪ ﭘﯿﺪاﻳﺶ ﻧﺮماﻓﺰار ‪ Outlook WebAccess‬و اﺳﺘﻔﺎده از ﻓﺮﻣﺎن ‪ XMLHttpRequest‬ﻛﻪ‬ ‫ﻣﺎﻳﻜﺮوﺳﺎﻓﺖ اﺑﺪاع ﻛﺮده و در ﻧﺮماﻓﺰار اﻳﻨﺘﺮﻧﺖ اﻛﺴﭙﻠﻮر ﺑﻪﻛﺎر رﻓﺘﻪ اﺳﺖ، ﺑﺮﻣﻲﮔﺮدد .اﻣﺎ اﻣﺮوزه اﻏﻠﺐ‬ ‫ﻣﺮورﮔﺮھﺎي ﻣﮫﻢ و ﺷﻨﺎﺧﺘﻪﺷﺪه )از ﺟﻤﻠ ﻪ ﻓﺎﻳﺮﻓﺎﻛﺲ( از آن ﭘﺸﺘﯿﺒﺎﻧﻲ ﻣﻲ ﻛﻨﻨﺪ و دﻳﮕﺮ ﻳﻚ ﻓﻨﺎور ي ﻣﺤﺪود ﺑﻪ‬ ‫اﻳﻨﺘﺮﻧﺖ اﻛﺴﭙﻠﻮرر ﻧﯿﺴﺖ.‬ ‫ﭼﺮا ‪ Ajax‬اﯾﻦ ﻗﺪر اھﻤﯿﺖدارد؟‬ ‫ﻓﻨﺎوري ايﺟﻜﺲ ﺟﺪﻳﺪ اﺳﺖ و ﺷﮕﻔﺖاﻧﮕﯿﺰ ﺑ ﻪﻧﻈﺮ ﻣﻲرﺳﺪ. وﻟﻲ در ﺣﻘﯿﻘﺖ ﻛﻞ اﻳﻦ ﺷﻌﺒﺪه ﺑﺮ اﺳﺎس‬ ‫ﻓﻨﺎوريھﺎﻳﻲ ﺑﻨﺎ ﺷﺪه اﺳﺖ ﻛﻪ ھﻢاﻛﻨﻮن ﻣﻮﺟﻮدﻧﺪ: ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و .‪ XML‬ھﺮ دوي اﻳﻦ ﻓﻨﺎوري ھﺎ ﺗﺎ ﺣﺪ‬ ‫زﻳﺎدي ﺑﺎز ھﺴﺘﻨﺪ و ﻣﻨﺤﺼﺮ ﺑﻪ ﺷﺮﻛﺖ ﺧﺎﺻﻲ ﻧﯿﺴﺘﻨﺪ. ﺑ ﻪ ھﻤﯿﻦ دﻟﯿﻞ اﻳﻦ روزھﺎ ﺗﻤﺎم ﻣﺤﺎﻓﻞ دﻧﯿﺎي ﺑﺮﻧﺎﻣ ﻪ‬ ‫ﻧﻮﻳﺴﻲ ﻣﻤﻠﻮ از ﻣﻘﺎﻻت و ﺗﺤﻠﯿﻞھﺎﻳﻲ درﺑﺎره ‪ Ajax‬اﺳﺖ. ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ ﻣﻲﺗﻮاﻧﯿﺪ ﺻﻔﺤﻪ ﻧﺨﺴﺖ ﺳﺎﻳﺖ‬ ‫ﻣﻮﺳﻮم ﺑﻪ< ﻛﺎﻧﺎل ﺷﺒﻜﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺳﺎن >را ﺑﺎزﻛﻨﯿ ﺪ.‬ ‫ﺑﯿﺸﺘﺮ اﻳﻦ ﺻﻔﺤﻪ )در زﻣﺎن ﻧﮕﺎرش اﻳﻦ ﻳﺎدداﺷﺖ( ﺑﻪ ﻣﻘﺎﻻت و ﻣﻄﺎﻟﺐ ﻣﺘﻨﻮﻋﻲ درﺑﺎره ‪ Ajax‬اﺧﺘﺼﺎص ﻳﺎﻓﺘﻪ‬ ‫اﺳﺖ. ﻣﺠﻼت ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﯿﺰ ﻣﻘﺎﻻت ﻣﺘﻌﺪدي در اﻳﻦ زﻣﯿﻨﻪ ﻣﻨﺘﺸﺮ ﻛﺮدهاﻧﺪ و ﺳﺎﻳﺖھﺎي ﻣﻌﺮوﻓﻲ ﻣﺎﻧﻨﺪ‬ ‫‪O' Reilly‬و ‪ xml.com‬ﻧﯿﺰ در اﻳﻦ ﺑﺎره ﻣﻄﻠﺐ دارﻧﺪ .‬ ‫ﺑﻨﺎﺑﺮاﻳﻦ ﻇﺮﻓﯿﺖ ﺑﺎﻻﻳﻲ ﺑﺮاي ﺗﺒﺪﻳﻞ ايﺟﻜﺲ ﺑﻪ ﻳﻚ اﺳﺘﺎﻧﺪارد ﺟﮫﺎﻧﻲ وﺟﻮد دارد. از اﻳﻦ رو ﻗﺮار اﺳﺖ در ﺗﺎرﻳ ﺦ‬ ‫ﺳﯿﺰدھﻢ ﻣﺎرس ﺳﻤﯿﻨﺎر ﻣﮫﻤﻲ در زﻣﯿﻨﻪ ‪ Ajax‬ﺑﺮﮔﺰار ﺷﻮد. اﮔﺮ ھﻤﯿﻦ اﻻن ﺑ ﻪ ﺳﺎﻳﺖ ‪ajaxseminar.com‬‬ ‫ﻣﺮاﺟﻌ ﻪ ﻛﻨﯿﺪ، ﻣﺘﻮﺟﻪ ﻣﻲﺷﻮﻳﺪ ﻛﻪ ﻋﻼوه ﺑﺮ ﻃﺮاح اﻳﻦ ﺗﻜﻨﯿﻚ، ﭼﻨﺪﻳﻦ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﺷﺎﺧﺺ از ﺷﺮﻛﺖ ھﺎي‬ ‫ﺑﺰرﮔﻲ ھﻤﭽﻮن ﻳﺎھﻮ در آن ﺷﺮﻛﺖ ﺧﻮاھﻨﺪ داﺷﺖ .‬ ‫اﻳﻦ ﻓﻨﺎوري از ﻳﻚ ﺟﻨﺒﻪ دﻳﮕﺮ ﻧﯿﺰ اھﻤﯿﺖ دارد. ﺑﻪدﻟﯿﻞ ﻋﺪم ﻧﯿﺎز ﺑﻪ ﺑﺎرﮔﺬاري ﻣﺠﺪد ﻛﻞ ﻳﻚ ﺻﻔﺤ ﻪ وب، ﻣﻘﺪار‬ ‫دادهھﺎﻳﻲ ﻛﻪ ﻻزم اﺳﺖ ﺑﺮاي ﺗﻜﻤﯿﻞ ﻳﻚ ‪ Interaction‬ﻣﯿﺎن ﻛﺎرﺑﺮ و ﺳﺎﻳﺖ ﻣﺒﺎدﻟ ﻪ ﺷﻮد، ﺑ ﻪ ﺷﺪت ﻛﺎھﺶ‬ ‫ﻣﻲﻳﺎﺑ ﺪ و اﻳﻦ ﺑﻪ ﻣﻌﻨﻲ اﻓﺰاﻳﺶ ﻣﺤﺴﻮس ﺳﺮﻋﺖ ﻧﺮماﻓﺰارھﺎي ﺗﺤﺖ وب، ﺳﮫﻮﻟﺖ ﺑﻪﻛﺎرﮔﯿﺮي اﻳﻨﺘﺮﻓﯿﺲھﺎي‬ ‫ﻣﺒﺘﻨﻲ ﺑﺮ ايﺟﻜﺲ و ﻛﺎرﺑﺮﭘﺴﻨﺪﺗﺮﺷﺪن آن ھﺎ ﻣﻲﺷﻮد. ﺑ ﻪ ھﻤﯿﻦ دﻟﯿﻞ اﻳﻦ روزھﺎ اﻛﺜﺮ ﭘﻮرﺗﺎلھﺎي ﺑﺰرگ )ﻣﺎﻧﻨﺪ‬ ‫ﻳﺎھﻮ( ﻣﺸﻐﻮل ﻃﺮاﺣﻲ اﻳﻨﺘﺮﻓﯿﺲھﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ‪ Ajax‬ھﺴﺘﻨﺪ .‬ ‫ﺑﺎ اﻳﻦ ھﻤﻪ ﻣﺰاﻳﺎي ايﺟﻜﺲ ﺑﻪ ھﻤﯿﻦ ﻣﻮارد ﺧﺘﻢ ﻧﻤﻲﺷﻮد. ﺗﺼﻮر ﻛﻨﯿﺪ وﻗﺘﻲ در ﻃﻮ ل ﺷﺒﺎﻧﻪ روز ﻣﯿﻠﯿﺎردھﺎ ﺑﺎر‬ ‫ﻓﺮآﻳﻨﺪ ﺑﺎرﮔﺬاري ﻣﺠﺪد ﺻﻔﺤﺎت وب ﺗﻌﺎﻣﻠﻲ در ﺷﺒﻜﻪ اﻳﻨﺘﺮﻧﺖ ﺗﻜﺮار ﻣﻲﺷﻮد، اﺳﺘﻔﺎده از ايﺟﻜﺲ ﭼﮕﻮﻧﻪ‬ ‫ﻣﻮﺟﺐ آزاد ﺷﺪن ﭘﮫﻨﺎيﺑﺎﻧﺪ اﻳﻨﺘﺮﻧﺖ و در ﻧﺘﯿﺠ ﻪ ﻣﯿﻠﯿﺎردھﺎ دﻻر ﺻﺮﻓﻪﺟﻮﻳﻲ اﻗﺘﺼﺎدي در اﻳﻦ زﻣﯿﻨﻪ ﻣﻲﺷﻮد و‬ ‫اﻳﻦ ﺑﻪ ﻧﻮﺑﻪ ﺧﻮد اﻧﻘﻼﺑﻲ در ﻋﺮﺻﻪ وب و ﻓﻀﺎي ﺳﺎﻳﺒﺮ ﺑﻪ ﺷﻤﺎر ﻣﻲرود .اﻳﻦ ﺗﺤﻮل در ﺷﺮاﻳﻄﻲ اﺗﻔﺎق ﻣﻲاﻓﺘﺪ‬ ‫ﻛ ﻪ ھﻤﺰﻣﺎن ﻓﻨﺎوريھﺎي اﻳﻨﺘﺮﻧﺖ ﭘﺮﺳﺮﻋﺖ ھﻤﭽﻮن ‪ ADSL‬ﺑ ﻪ ﺷﺪت در ﺣﺎل رﺷﺪ ھﺴﺘﻨﺪ .‬ ‫ﺣﺎل ﺗﺼﻮر ﻛﻨﯿﺪ اﮔﺮ ﻓﻨﺎوري ايﺟﻜﺲ در ﻣﻘﯿﺎس ﮔﺴﺘﺮدهاي ﻣﻮرد اﺳﺘﻔﺎده ﻧﺮماﻓﺰارھﺎي ﺗﺤﺖ وب ﻗﺮارﮔﯿﺮد.‬ ‫آﻧﮕﺎه اﻓﺰاﻳﺶ ﺳﺮﻋﺖ ﻛﺎر ﺑﺎ اﻳﻨﺘﺮﻧﺖ ﭼﻨﺪ ﺑﺮاﺑﺮ ﺧﻮاھﺪ ﺷﺪ. ﭼﻨﯿﻦ ﺗﺤﻮﻟﻲ ﻣﻲﺗﻮاﻧﺪ اﻳﻨﺘﺮﻧﺖ را ﺑﻪ ﻛﺎﻣﭙﯿﻮﺗﺮ دوم‬ ‫ﻛﺎرﺑﺮان ﺗﺒﺪﻳﻞ ﻛﻨﺪ. ﺑ ﻪ ﮔﻮﻧﻪاي ﻛ ﻪ ﺑﺮاي آنھﺎ اﺟﺮاي ﻳﻚ ﻧﺮماﻓﺰار از روي وب ﺗﻔﺎوت ﻣﺤﺴﻮﺳﻲ ﺑﺎ اﺟﺮاي آن از‬ ‫روي ﻛﺎﻣﭙﯿﻮﺗﺮ دﺳﻜﺘﺎپ ﻧﺪاﺷﺘ ﻪ ﺑﺎﺷﺪ. در اﻳﻦ ﺻﻮرت ﻣﻤﻜﻦ اﺳﺖ واﻗﻌﺎ ﺑﺨﺶ ﻣﮫﻤﻲ از ﺗﻮان ﭘﺮدازﺷﻲ‬ ‫ﻧﺮماﻓﺰارھﺎ، ﭼﻪ از ﻧﻮع دﺳﻜﺘﺎپ و ﭼﻪ از ﻧﻮع ﺗﺤﺖ وب ﺑ ﻪ ﺳﯿﺴﺘﻢھﺎي ﻣﻮﺳﻮم ﺑﻪ ‪ Web Service‬واﮔﺬار ﺷﻮد.‬ ‫از اﻳﻦ رو ﻛﺴﺎﻧﻲ ﻛﻪ ﻣﺒﺘﻜﺮ و ﻣﺸﻮق اﻳﺪه وب ﺳﺮوﻳﺲ ﺑﻮدهاﻧﺪ، اﻳﻦ روزھﺎ اﻧﮕﯿﺰه ﺗﺎزهاي ﺑﺮاي ﺳﺮﻋﺖ‬ ‫ﺑﺨﺸﯿﺪن ﺑ ﻪ اﻳﻦ ﻓﻨﺎوري ﭘﯿﺪا ﻛﺮدهاﻧﺪ و ﺗﻼش ﻣﻲ ﻛﻨﻨﺪ دو ﻓﻨﺎوري ايﺟﻜﺲ و وب ﺳﺮوﻳﺲ را ﺑ ﻪﻳﻜﺪﻳﮕﺮ ﭘﯿﻮﻧﺪ‬ ‫دھﻨﺪ و راھﻜﺎرھﺎي ﺗﺎزهاي ﺑﯿﺎﻓﺮﻳﻨﻨﺪ.‬ ‫ﻛﺪام ﺳﺎﯾﺖھﺎ از ايﺟﻜﺲ اﺳﺘﻔﺎده ﻛﺮدهاﻧﺪ؟‬ ‫دﻧﯿﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ وب ھﻨﻮز درﮔﯿﺮ ھﯿﺠﺎﻧﺎت ﻣﺮﺑﻮط ﺑﻪ آﺷﻨﺎﻳﻲ ﺑﺎ اﻳﻦ ﭘﺪﻳﺪه اﺳﺖ و در ﺣﺎ ل ﺑﺮرﺳﻲ‬ ‫ﻣﺸﻜﻼت ﺗﻜﻨﯿﻜﻲ و ھﻀﻢ و ﺟﺬب آن در ﺑﺎﻓﺖ ﺑﺮﻧﺎﻣﻪھﺎي ﺗﺤﺖ وب ﻣﻲﺑﺎﺷﺪ. ﺑﻪ ھﻤﯿﻦ دﻟﯿ ﻞ ﻣﯿﺰان اﺳﺘﻔﺎده‬ ‫ﻋﻤﻠﻲ از آن ﭼﻨﺪان ﮔﺴﺘﺮده ﻧﯿﺴﺖ. اﻣﺎ ﭼﻮن ﻛﺎراﻳﻲ ايﺟﻜﺲ دﻳﮕﺮ ﺑﺮاي ھﻤ ﻪ ﺛﺎﺑﺖ ﺷﺪه اﺳﺖ، ﺣﺮﻛﺖھﺎي‬ ‫ﺑﺰرﮔﻲ در ﺳﺮاﺳﺮ اﻳﻨﺘﺮﻧﺖ ﺑﻪ ﺳﻤﺖ اﺳﺘﻔﺎده از اﻳﻦ ﻓﻨﺎوري در ﺟﺮﻳﺎن اﺳﺖ. از ﺟﻤﻠﻪ اﻳﻨﺘﺮﻓﯿﺲ ﻧﺴﺨﻪ دوم‬ ‫‪Yahoo Mail‬ﻛﻪ ﺑ ﻪ ﻧﺴﺨ ﻪ ﺑﺘﺎ ﻣﻌﺮوف اﺳﺖ و ﻓﻌﻼ در دﺳﺘﺮس ﻛﺎرﺑﺮان ﺳﺮوﻳﺲ ﻏﺮ راﻳﮕﺎن ﻳﺎھﻮ ﻗﺮاردارد، از‬ ‫ھﻤﯿﻦ ﻓﻨﺎوري اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ ﻛﻪ ﺑﻪ زودي اﻳﻨﺘﺮﻓﯿﺲ ﺟﺪﻳﺪ در دﺳﺘﺮس ﻋﻤﻮم ﻗﺮار ﻣﻲﮔﯿﺮد. ﺳﺮوﻳﺲ ‪Gmail‬‬ ‫و ‪ Google Map‬ﻧﯿﺰ از اﻳﻦ ﻓﻨﺎوري اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ .‬ ‫ﺑﮫﺮوز ﻧﻮﻋﻲﭘﻮر‬ ‫ﻣﺎھﻨﺎﻣﻪ ﺷﺒﮑﻪ - ﺑﮫﻤﻦ ۴٨٣١‬ ‫ﮐﺘﺎﺑﺨﺎﻧﮫ ‪ASP.NET Atlas‬‬ ‫ﻣﻘﺪﻣﻪ‬ ‫‪ ASP.NET Atlas‬ﮐﺘﺎﺑﺨﺎﻧ ﻪ ای ﭘﺮﺑﺎر، ھﻢ در ﺳﻤﺖ ﺳﺮور و ھﻢ در ﺳﻤﺖ ‪ Client‬ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﺑﺮﻧﺎﻣ ﻪ‬ ‫ھﺎی ﺑﺮ ﻣﺒﻨﺎی ‪ AJAX‬اﺳﺖ. اﯾﻦ ﻣﻘﺎﻟﻪ ﯾﮏ دﯾﺪ ﻋﻤﻮﻣﯽ ﻧﺴﺒﺖ ﺑﻪ اﻣﮑﺎﻧﺎت اﻃﻠﺲ )‪ (Atlas‬ﺑﻪ ﺷﻤﺎ ﺧﻮاھﺪ‬ ‫داد. ﭼﻮن اﻃﻠﺲ ﯾﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﺴﯿﺎر ﮔﺴﺘﺮده اﺳﺖ اﯾﻦ ﻣﻘﺎﻟﻪ دو اﻣﮑﺎن ﺑﺴﯿﺎر ﻣﮫﻢ اﻃﻠﺲ را ﻣﻌﺮﻓﯽ ﻣﯿﮑﻨﺪ:‬ ‫1.‬ ‫2.‬ ‫اﻣﮑﺎن ﺻﺪا ﮐﺮدن ﯾﮏ ‪ web service‬از ﻃﺮﯾﻖ ﯾﮏ اﺳﮑﺮﯾﭙﺖ در ﺳﻤﺖ ‪Client‬‬ ‫ﺳﮫﻮﻟﺖ اﺳﺘﻔﺎده از ‪javaScript‬ھﺎﯾﯽ ﮐ ﻪ در ﺗﻤﺎم ﻣﺮورﮔﺮھﺎی وب اﺟﺮا ﻣﯿﺸﻮﻧﺪ.‬ ‫ﭘﯿﺶ زﻣﯿﻨ ﻪ‬ ‫ﻧﻘﺎﺷﯽ از ﻃﺮﯾﻖ وب ھﻤﻮاره ﺑﺮای ﮐﺎرﺑﺮان، از ﺟﻤﻠ ﻪ ﻣﻦ ﺟﺎﻟﺐ ﺑﻮده اﺳﺖ. اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺑ ﻪ ﮐﺎرﺑﺮ اﺟﺎزه ﻣﯿﺪھﺪ ﮐﻪ‬ ‫ﺑﺎ ﮐﻤﮏ ﻣﻮس روی ﺻﻔﺤﻪ ﻧﻘﺎﺷﯽ ﮐﻨﺪ اﻟﺒﺘ ﻪ در ﻣﺮورﮔﺮھﺎی وب. ﻧﻤﻮﻧ ﻪ اﯾﻦ ﺑﺮﻧﺎﻣ ﻪ در ﺳﺎﯾﺖ ‪JavaScript‬‬ ‫‪ Draw‬ﻣﻮﺟﻮد اﺳﺖ وﻟﯽ ﺗﻨﮫﺎ ﺑﺮوی ‪ Mozilla Firefox‬ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ. وﻟﯽ ﮐﺪ ذﯾ ﻞ ﺑﺎ ﺗﮑﻨﻮﻟﻮژی ‪Atlas‬‬ ‫ﻣﺤﺪودﯾﺘﯽ روی ھﯿﭻ ﻣﺮورﮔﺮی ﻧﺪارد.‬ ‫‪Atlas‬‬ ‫ﻧﺼﺐ‬ ‫ھﻢ اﮐﻨﻮن ) زﻣﺎن ﻧﻮﺷﺘﻦ اﯾﻦ ﻣﻘﺎﻟﻪ( ﺷﻤﺎ ﻣﯿﺘﻮاﻧﯿﺪ ﻧﺴﺨﻪ ﻣﺎه دﺳﺎﻣﺒﺮ ‪ Atlas‬را از اﯾﻨﺠﺎ ﺑﺮدارﯾﺪ. اﮔﺮ اﯾﻦ ﻟﯿﻨﮏ‬ ‫وﺟﻮد ﻧﺪاﺷﺖ، ﻣﯿﺘﻮاﻧﯿﺪ از وب ﺳﺎﯾﺖ ‪ Atlas‬ﻟﯿﻨﮏ درﺳﺖ را ﺑﺮدارﯾﺪ. ﮐﺘﺎﺑﺨﺎﻧﻪ ‪ Atlas‬ﻓﺎﯾ ﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪) .vsi‬‬ ‫ﺗﻤﭙﻠﺖ 5002 ‪ (Visual Studio‬ﻣﻮﺟﻮد اﺳﺖ. ﮐﺎﻓﯽ اﺳﺖ ﮐ ﻪ روی ﻓﺎﯾﻞ در دﺳﺘﮕﺎه ﺧﻮد ) ﮐﻪ ‪Visual Studio‬‬ ‫5002 را روی آن ﻧﺼﺐ ﮐﺮده اﯾﺪ( دﺑﻞ ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺗﺎ ﺑﺮاﺣﺘﯽ ﻧﺼﺐ ﺷﻮد.‬ ‫ﺳﺎﺧﺖ ﯾﮏ ﭘﺮوژه اﻃﻠﺲ‬ ‫ﺑﻪ ﻣﺤﺾ اﯾﻨﮑﻪ اﻃﻠﺲ را ﻧﺼﺐ ﮐﺮدﯾﺪ ﻣﯿﺘﻮاﻧﯿﺪ ﯾﮏ ﭘﺮوژه اﻃﻠﺲ را ﺑﺎ رﻓﺘﻦ ﺑﻪ ﻣﻨﻮی ‪Web Site <-New <- File‬‬ ‫. ﺑﻌﺪ از اﯾﻨﮑﺎر ﺻﻔﺤ ﻪ زﯾﺮ ﭘﺪﯾﺪار ﻣﯿﺸﻮد:‬ ‫در ﻗﺴﻤﺖ ‪ Location‬دو ﺣﺎﻟﺖ ‪ File System‬ﯾﺎ ‪ HTTP‬ﻗﺎﺑﻞ اﻧﺘﺨﺎب اﺳﺖ. ﺑﺎ اﻧﺘﺨﺎب ‪ ،HTTP‬ﻣﯿﺘﻮاﻧﯿﺪ وب‬ ‫ﺳﺎﯾﺖ ﺧﻮد را روی ‪ IIS Sever‬ﺑﺴﺎزﯾﺪ. و ﺑﺎ اﻧﺘﺨﺎب ‪ File System‬وب ﺳﺎﯾﺖ ﺷﻤﺎ روب ﻓﺎﯾﻞ ﺳﯿﺴﺘﻢ ﻣﺤﻠﯽ‬ ‫ﺳﺎﺧﺘ ﻪ ﻣﯿﺸﻮد ) ﺑﺪون ﻧﯿﺎز ﺑ ﻪ ‪ .( IIS‬ﺷﻤﺎ ھﺮ ﮐﺪام از اﻧﺘﺨﺎﺑﮫﺎ را ﻣﯿﺘﻮاﻧﯿﺪ اﺳﺘﻔﺎده ﮐﻨﯿﺪ. وﻟﯽ ﺑﻪ ﻧﻈﺮ ﻣﯿﺮﺳ‬ ‫ﮐ ﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺎ ‪ IE‬روی ‪ IIS‬ﺑﮫﺘﺮ ﮐﺎر ﻣﯿﮑﻨﺪ.‬ ‫ﺳﺎﺧﺘﺎر ﭘﺮوژه اﻃﻠﺲ‬ ‫وب ﺳﺎﯾﺖ اﻃﻠﺲ ﺗﺎزه ﺳﺎﺧﺘ ﻪ ﺷﺪه، ﭼﻨﯿﻦ ﺳﺎﺧﺘﺎری دارد:‬ ‫•‬ ‫•‬ ‫•‬ ‫‪App_Data‬‬ ‫ﯾﮏ ﻓﻮﻟﺪر ﺧﺎﻟﯽ ﺑﺮای ﮔﺬاﺷﺘ ﻦ ﻓﺎﯾﻠﮫﺎ ی داده‬ ‫‪Bin‬‬ ‫ﻓﻮﻟﺪری ﮐ ﻪ ‪dll‬ھﺎی اﻃﻠﺲ در آن اﺳﺖ. در واﻗﻊ ﻗﺴﻤﺖ ﺳﺮوری ﮐﺘﺎﺑﺨﺎﻧ ﻪ اﻃﻠﺲ در اﯾﻦ ﻓﻮﻟﺪر اﺳﺖ.‬ ‫‪S criptLibrary‬‬ ‫ﻣﺤﻠﯽ ﮐﻪ ﻣﯿﺘﻮاﻧﯿﺪ ﻓﺎ ﯾﻠﮫﺎی ‪ JavaScript‬ﺧﻮد را در آن ﺑﮕﺬارﯾﺪ.‬ ‫‪Atlas o‬‬ ‫اﺳﮑﺮﯾﭙﺘﮫﺎی ﺳﻤﺖ ﮐﻼﯾ ﻨﺖ)‪ (Client‬در اﯾﻦ ﻓﻮﻟﺪر و در دو ز ﯾﺮداﯾﺮﮐﺘﻮری ﻗﺮارﻣﯿﮕﯿﺮﻧﺪ.‬ ‫‪Debug‬‬ ‫§‬ ‫ﻧﺴﺨ ﻪ ﻗﺎﺑﻞ دﯾﺒﺎگ از اﺳﮑﺮﯾﭙﺘﮫﺎی ‪ JavaScript‬در اﯾﻦ ﻓﻮﻟﺪر‬ ‫ﻗﺮارﻣﯿﮕﯿﺮﻧ ﺪ‬ ‫‪Release‬‬ ‫§‬ ‫ﻧﺴﺨ ﻪ ﻗﺎﺑ ﻞ ﻋﺮﺿ ﻪ در ا ﯾﻨﺠﺎ ﻗﺮارﻣﯿﮕﯿﺮﻧﺪ. اﯾﻦ اﺳﮑﺮﯾﭙﺘﮫﺎ ﺧﯿﻠ ﯽ‬ ‫ﻓﺸﺮده ﺗﺮ ﻧﻮﺷﺘﻪ ﺷﺪه اﻧ ﺪ و ﺑﻌﻀﯽ از ﮐﺪھﺎی ﻣﺮﺑﻮ ط ﺑ ﻪ دﯾﺒﺎگ‬ ‫ﺣﺬف ﺷﺪه اﻧﺪ.‬ ‫اﺳﮑﺮﭘﺘﮫﺎی ﮐﻼﯾﻨﺖ اﻃﻠﺲ‬ ‫ﻧﺴﺨﻪ ﻣﺎه دﺳﺎﻣﺒﺮ اﻃﻠﺲ ﺷﺎﻣﻞ اﺳﮑﺮﯾﭙﺘﮫﺎی زﯾﺮ اﺳﺖ:‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫‪Atlas.js‬‬ ‫ھﺴﺘﻪ اﺻﻠﯽ اﺳﮑﺮﭘﺘﮫﺎی اﻃﻠﺲ ﮐ ﻪ ﺷﺎﻣﻞ ﻓﺎﻧﮑﺸﻨﮫﺎی ﮐﺎرﺑﺮدی اوﻟﯿﻪ و ﮐﻨﺘﺮﻟﮫﺎ و ﮐﺎﻣﭙﻮﻧﻨﺘﮫﺎی ﺳﻤ ﺖ‬ ‫ﮐﻼﯾﻨﺖ اﺳﺖ.‬ ‫‪AtlasCompat2.js‬‬ ‫‪AtlasCompaat.js‬و‬ ‫ﻻﯾ ﻪ ﺳﺎزﮔﺎر ﮐﻨﻨﺪه اﻧﻮاع ﻣﺮورﮔﺮھﺎی وب ﺑﺎ اﻃﻠﺲ در اﯾﻦ دو ﻓﺎﯾﻞ ھﺴﺘﻨﺪ.‬ ‫‪AtlasRuntime.js‬‬ ‫ﻧﺴﺨﻪ ﺧﻼﺻ ﻪ ‪ Atlas.js‬ﮐ ﻪ ﺷﺎﻣﻞ ﮐﻨﺘﺮﻟﮫﺎ و ﮐﺎﻣﭙﻮﻧﻨﺘﮫﺎ ی ﺳﻤﺖ ﮐﻼﯾﻨ ﺖ ﻧﯿﺴ ﺖ.‬ ‫‪AtlasUIDragDrop.js‬‬ ‫اﺑﺰارھﺎﯾﯽ ﺑﺮای ﭘﯿﺎده ﮐﺮدن ‪ Drag & Drop‬در ﺻﻔﺤﺎت وب درو ن اﯾﻦ ﻓﺎﯾﻞ اﺳ ﺖ.‬ ‫‪AtlasUIGlits.js‬‬ ‫اﺑﺰارھﺎﯾﯽ ﺑﺮای ﭘﯿﺎده ﮐﺮدن ﺟﻠﻮه ھﺎی و ﯾﮋه و اﻧﯿﻤﯿﺸﻦ در وب ﺳﺎﯾﺖ درون اﯾﻦ ﻓﺎﯾﻞ اﺳﺖ.‬ ‫‪AtlasUIMap‬‬ ‫اﺑﺰارھﺎﯾﯽ ﺑﺮای اﺳﺘﻔﺎده از ‪Virtual Earth‬‬ ‫ﻓﺎﯾﻠﮫﺎی دﯾﮕﺮ‬ ‫ﭘﺮوژه اﻃﻠﺲ ﻓﺎﯾﻠﮫﺎی ذﯾﻞ را ﻧﯿﺰ ﺑﻪ رﯾﺸﻪ ﭘﺮوژه اﺿﺎﻓ ﻪ ﻣﯿﮑﻨﺪ:‬ ‫•‬ ‫•‬ ‫•‬ ‫•‬ ‫‪Default.aspx.cs‬‬ ‫و‬ ‫‪Default.aspx‬‬ ‫ﺻﻔﺤ ﻪ وﺑ ﯽ اﺳﺖ ﮐ ﻪ ﺷﺎﻣ ﻞ ﮐﻨﺘﺮل ‪ Script Manager‬اﺳﺖ ﮐ ﻪ ﻣﺴﻮوﻟﯿﺖ ﭘﺮدازش ﺑﻼﮐﮫﺎی اﺳﮑﺮ ﯾﭙ ﺖ‬ ‫ﻣﺮﺑﻮ ط ﺑ ﻪ ﺳﻤﺖ ﮐﻼﯾﻨﺖ ﻣﯿﺒﺎﺷ ﺪ. ﯾﮏ اﺳﮑﺮﯾ ﭙﺖ ﺳﻤ ﺖ ﮐﻼﯾﻨ ﺖ ﮐﻪ از ﻧﻮ ع ‪ test/xml-script‬اﺳﺖ ﺑ ﻪ ﺻﻔﺤ ﻪ‬ ‫اﺿﺎﻓ ﻪ ﻣﯿﺸﻮ د. اﯾﻦ اﺳﮑﺮﯾﭙ ﺖ ﺑﺮای ﻧﻮﺷﺘﻦ اﺳﮑﺮﯾﭙﺘﮫﺎ ﺑﺎ اﺳﺘﻔﺎده از ‪ X ML‬اﺳﺘﻔﺎده ﻣﯿﺸﻮد.‬ ‫‪Eula.rtf‬‬ ‫‪Readme.txt‬‬ ‫‪Web.Config‬‬ ‫اﯾﻦ ﻓﺎﯾﻞ ﺑﺮای اﺟﺮای ﭘﺮوژه اﻃﻠﺲ ﻻزم اﺳﺖ. اﯾﻦ ﻓﺎﯾﻞ ﺷﺎﻣﻞ ﺗﻨﻈﯿﻤﺎﺗﯽ ﺨﺼﻮص اﻃﻠﺲ اﺳﺖ.‬ ‫ﺗﻮﺿﯿﺢ ﮐﺪ‬ ‫ﺑﺎ اﯾﻦ ﺑﺮﻧﺎﻣ ﻪ ﮐﺎرﺑﺮ ﻗﺎدر اﺳﺖ روی ﺻﻔﺤ ﻪ ﺑﺎ ﻓﺸﺮدن ﮐﻠﯿﺪ ﭼﭗ ﻣﻮس، ﺧﻂ ﺑﮑﺸﺪ. زﻣﺎﻧﯽ ﮐﻪ ﮐﺎرﺑﺮ ﮐﻠﯿﺪ ﻣﻮ س‬ ‫را رھﺎ ﻣﯿﮑﻨﺪ ﯾﺎ ﻣﻮس را ﺑﻪ ﺑﯿﺮون از ﺻﻔﺤﻪ ﻣﯿﺒﺮد، ﮐﺸﯿﺪن ﺧﻂ ﺑﻪ اﻧﺘﮫﺎ ﻣﯿﺮﺳﺪ. راه دﯾﮕﺮی ﺑﺮای ﮐﺸﯿﺪن ﺧﻂ‬ ‫‪ VML‬اﺳﺘﻔﺎده ﻧﻤﯿﮑﻨﯿﻢ.‬ ‫‪ VML‬وﺟﻮد دارد وﻟﯽ ﻣﺎ از‬ ‫‪ JavaScript‬و‬ ‫ﺑﺎ اﺳﺘﻔﺎده از‬ ‫ﺻﻔﺤﻪ ‪ Default‬ﯾﮏ ﻋﮑﺲ ) از ﻧﻮع ﻋﮑﺲ ‪HTML‬ی – ﺗﮓ‪ ( IMG‬ﺧﻮاھﺪ داﺷﺖ. روﯾﺪادھﺎی ﻣﻮس ﺑﺮ روی‬ ‫ﻋﮑﺲ، ﺗﻮﺳﻂ ‪ JavaScript‬ﮔﺮﻓﺘﻪ ﻣﯿﺸﻮد. ‪ JavaScript‬ﯾﮏ ﺳﺮی ﻧﻘﻄﻪ ) ﻧﻘﻄﻪ ھﺎی ﮐ ﻪ در ﻣﺴﯿﺮ ﺣﺮﮐﺖ‬ ‫ﻣﻮس ھﺴﺘﻨﺪ ( را ﺑ ﻪ ‪ web service‬ﻣﯿﻔﺮﺳﺘﺪ. ‪ Web service‬ﻋﮑﺲ را ﺑﺎ ﮐﺸﯿﺪن ﺧﻄﮫﺎﯾﯽ ﺑﯿﻦ ﺗﻤﺎم ﻧﻘﻄﻪ‬ ‫ھﺎﯾﯽ ﮐ ﻪ ﮐﻼﯾﻨﺖ ﻓﺮﺳﺘﺎده اﺳﺖ، ﺑﺮوزرﺳﺎﻧﯽ ﻣﯿﮑﻨﺪ و آﻧﺮا در ‪ Session‬ﻗﺮار ﻣﯿﺪھﺪ. در ﻧﮫﺎﯾﺖ، ﮐﻼﯾﻨﺖ )‬ ‫‪ (Client‬ﯾﮏ درﺧﻮاﺳﺖ ﺑﺮای ﻋﮑﺲ ﺑﺮوزﺷﺪه ﺑﻪ ﺳﺮور ﻣﯿﻔﺮﺳﺘﺪ. ﻣﻨﺒﻊ ﻋﮑﺲ، ﯾﮏ ‪ HTTP handler‬اﺳﺖ ﮐﻪ‬ ‫ﻋﮑﺲ را ﺑﺼﻮرت ﯾﮏ ﺟﺮﯾﺎن ) ‪ ( stream‬از ‪ session‬ﮔﺮﻓﺘ ﻪ و ﺑﻪ ﮐﻼﯾﻨﺖ ﻣﯿﻔﺮﺳﺘﺪ. ﮐﺎﻣﭙﻮﻧﻨﺘﮫﺎی اﺻﻠﯽ ﻧﺮم اﻓﺰار‬ ‫ﻣﺎ ﺑ ﻪ ﺷﺮح ذﯾﻞ ھﺴﺘﻨﺪ:‬ ‫·‬ ‫‪Default.aspx‬‬ ‫ﺻﻔﺤﻪ ای ﮐﻪ ﺷﺎﻣﻞ ﻋﮑﺲ ﭘﻮﯾﺎ و ﮐﻨﺘﺮل ﻣﺪﯾﺮﯾﺖ اﻃﻠﺲ ) ‪Atlas Script Manager‬‬ ‫‪ (control‬اﺳﺖ.‬ ‫·‬ ‫‪ScribbleImage.ashx‬‬ ‫ﯾﮏ ‪ HTTP handler‬ﮐ ﻪ ﻋﮑﺲ ذﺧﯿﺮه ﺷﺪه در ‪ Session‬را ﺑﺼﻮرت ﺟﺮﯾﺎن ) ‪ (stream‬در ﻣﯽ‬ ‫آورد.‬ ‫‪ScribbleService.asmx‬‬ ‫·‬ ‫‪Web service‬ی ﮐﻪ ﺗﻤﺎم درﺧﻮاﺳﺘﮫﺎ ﺑﻪ آن داده ﻣﯿﺸﻮد. اﯾﻦ ‪ web service‬ﻋﮑﺲ را ﺗﻐﯿﯿﺮ‬ ‫ﻣﯿﺪھﺪ.‬ ‫‪Scribble.js‬‬ ‫·‬ ‫ﮐﺪھﺎی ‪ JavaScript‬ﻧﺮم اﻓﺰار ﮐ ﻪ درون ﯾﮏ ﻓﺎﯾﻞ ﻗﺮار داده ﺷﺪه اﻧﺪ.‬ ‫·‬ ‫‪Global.asax‬‬ ‫روﯾﺪادھﺎی ‪ Session_Start‬و ‪ Session_End‬در اﯾﻦ ﻓﺎﯾﻞ ﮐﻨﺘﺮل ﻣﯿﺸﻮﻧﺪ. ‪Session_Start‬‬ ‫ﯾﮏ ﻣﺘﻐﯿﺮ ‪ Session‬اﯾﺠﺎد ﻣﯿﮑﻨﺪ و ‪ Session_End‬ﻋﮑﺲ ذﺧﯿﺮه ﺷﺪه در ‪ Session‬را از‬ ‫ﺣﺎﻓﻈﻪ ﺧﺎرج ﻣﯿﮑﻨﺪ ) ‪( Dispose‬‬ ‫‪Global.asax‬‬ ‫ﻣﺎ ﮐﺪ ﻧﻮﯾﺴﯽ ﺧﻮد را از ﻓﺎﯾﻞ ‪ Global.asax‬ﺷﺮوع ﻣﯿﮑﻨﯿﻢ.‬ ‫در ﻣﻨﻮی ‪ Website‬روی ‪ Add New Item‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﯾﺎ ﮐﻠﯿﺪھﺎی ‪ C trl + Shift + A‬را‬ ‫1.‬ ‫ﺑﻔﺸﺎرﯾﺪ.‬ ‫2. در ﭘﻨﺠﺮه ‪ Global Application Class ،Add New Item‬را اﻧﺘﺨﺎب و ‪ ok‬را ﮐﻠﯿﮏ ﮐﻨﯿﺪ. ﺷﻤﺎ‬ ‫ﺑﺎﯾﺪ ﻓﺎﯾ ﻞ ‪ Global.asax‬را ﺑﺒﯿﻨﯿﺪ ﮐﻪ اﯾﺠﺎد ﺷﺪه اﺳﺖ.‬ ‫3.‬ ‫ﺣﺎ ل ﺑﺎﯾﺪ ‪ System.Drawing‬را ﺑ ﻪ اﯾﻦ ﻓﺎﯾﻞ اﺿﺎﻓ ﻪ ﮐﻨﯿﺪ. ﺧﻂ زﯾﺮ را در اﺑﺘﺪای ﻓﺎﯾﻞ ﺑﮕﺬارﯾﺪ:‬ ‫>% "‪<%@ Import Namespace="System.Drawing‬‬ ‫ﮐﺪ زﯾﺮ را ﺑﻪ ‪ Session_Start‬اﺎﻓ ﻪ ﮐﻨﯿﺪ:‬ ‫)‪e‬‬ ‫‪EventArgs‬‬ ‫,002(‪Bitmap‬‬ ‫;)002‬ ‫))‪Graphics.FromImage(bmp‬‬ ‫,‪sender‬‬ ‫‪Session_Start(object‬‬ ‫‪new‬‬ ‫=‬ ‫=‬ ‫‪g‬‬ ‫‪bmp‬‬ ‫‪(Graphics‬‬ ‫‪void‬‬ ‫{‬ ‫‪Bitmap‬‬ ‫‪using‬‬ { g.FillRectangle(new new Rectangle(0, g.Flush(); SolidBrush(Color.White), bmp.Width, bmp.Height)); 0, } Session["Image"] = bmp; } ‫ ( 002 در 002 ﭘﯿﮑﺴﻞ ﺑﺮﻧﮓ ﺳﻔﯿﺪ اﯾﺠﺎد ﻣﯿﮑﻨﺪ و آﻧﺮا درون ﻣﺘﻐﯿﺮی ﺑﻪ‬bitmap ) ‫4.اﯾﻦ ﮐﺪ ﯾﮏ ﻋﮑﺲ‬ .‫ ﻣﯿﮕﺬارد‬Session ‫ در‬Image ‫ﻧﺎم‬ .‫ اﯾﻦ ﻋﮑﺲ را آزاد ﻣﯿﮑﻨﺪ‬Session_End ‫5. ﻓﺎﻧﮑﺸﻦ‬ Bitmap bmp = (Bitmap)Session["Image"]; bmp.Dispose(); .‫ را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‬Add Reference ،Website ‫6. از ﻣﻨﻮی‬ .‫ ﮐﻨﯿﺪ‬Ok ‫ را اﻧﺘﺨﺎب و‬System.Drawing ،Add Reference ‫7. در‬ ‫ ﺑﻔﺸﺎرﯾﺪ ﺗﺎ‬Ctrl + Shift + B ‫ را اﻧﺘﺨﺎب ﮐﻨﯿﺪ و ﯾﺎ‬Build Web Site ،Build ‫8. در ﻧﮫﺎﯾﺖ از ﻣﻨﻮی‬ .‫ﻣﻄﻤﺌﻦ ﺷﻮﯾﺪ اﺷﮑﺎﻟﯽ در ﮐﺪ وﺟﻮد ﻧﺪارد‬ ScribbleImage.ashx ) ‫ را ﺑ ﻪ ﺻﻮرت ﺟﺮﯾﺎن‬session ‫ اﯾﻦ ﺳﺎت ﮐ ﻪ ﻋﮑﺲ ذﺧﯿﺮه ﺷﺪه در‬web handler ‫و ﻇﯿﻔﻪ اﯾﻦ‬ .‫( ﺑﻪ ﮐﻼﯾﻨﺖ ﺑﺮﮔﺮداﻧﺪ‬Stream .‫ را ﻓﺸﺎرﯾﺪ‬Ctrl + Shift + A ‫ ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﯾﺎ ﮐﻠﯿﺪھﺎی‬Add New Item ‫ روی‬Website ‫1. در ﻣﻨﻮی‬ ScribbleImage.ashx ‫ را اﻧﺘﺨﺎب و اﺳﻢ آﻧﺮا‬Generic Handler Add New Itemvg ‫2. در ﭘﻨﺠﺮه‬ .‫ﺑﮕﺬارﯾﺪ‬ ،Interface ‫ اﺳﺘﻔﺎده ﮐﻨﺪ ﺑﺎﯾﺪ‬session ‫ ﺑﺘﻮاﻧﺪ از ﻣﺘﻐﯿﺮ‬web handler ‫3.ﺑﺮای اﯾﻨﮑﻪ ﯾﮏ‬ ‫( ھﯿ ﭻ ﻣﺘﺪی از اﯾﻦ‬override ) ‫ را ﭘﯿﺎده ﮐﻨﺪ. ﻧﯿﺎزی ﺑﺮای ﭘﯿﺎده ﺳﺎزی‬IrequiresSessionState ‫اﯾﻨﺘﺮﻓﯿﺲ ﻧﯿﺴﺖ و ﻓﻘﻂ ﮐﺎﻓﯽ اﺳﺖ ﮐﻪ ﻣﻌﺮﻓﯽ ﺷﻮد. ﺧﻄﯽ ﮐﻪ ﮐﻼس را ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﺪ ﺑﻪ اﯾﻦ‬ :‫ﺷﮑﻞ ﺗﻐﯿﯿﺮ دھﯿﺪ‬ public class ScribbleImage : IHttpHandler, System.Web.SessionState.IRequiresSessionState :‫ اﺿﺎﻓﻪ ﮐﻨﯿﺪ‬ProcessRequest ‫4. ﺣﺎل اﯾﻦ ﮐﺪ را ﺑ ﻪ‬ public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/png"; context.Response.Cache.SetNoStore(); context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.Cache.SetExpires(DateTime.Now); context.Response.Cache.SetValidUntilExpires(false); System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)context.Session["Image"]; lock(bmp) { using (MemoryStream ms = new MemoryStream()) { bmp.Save(ms, ImageFormat.Png); ms.Flush(); context.Response.BinaryWrite(ms.GetBuffer()); } } } } ‫ ﻗﺮار ﻣﯿﺪھﺪ. اﯾﻦ ﮐﺎر ﺑﺎﻋﺚ ﻣﯿﺸﻮد ﮐﻪ‬image/png ‫ را ﺑﺮاﺑﺮ‬ContentType ،‫ﺧﻂ ﻧﺨﺴﺖ‬ .(HTML ‫ ﺑﺸﻨﺎﺳﺪ) ﺑﺠﺎی‬png ‫ﻣﺮورﮔﺮ وب ﺟﻮاب درﯾﺎﻓﺘﯽ از ﺳﺮور را ﺑﺼﻮرت‬ · ‫ ﮐﻨﺪ. ھﺮ ﭼﮫﺎر‬Cache ‫ را ﻧﺒﺎﯾﺪ‬response ‫ﭼﮫﺎر ﺧﻂ ﺑﻌﺪی ﺑ ﻪ ﻣﺮورﮔﺮ وب ﺗﺬﮐﺮ ﻣﯿﺪھﺪ ﮐ ﻪ‬ .‫ﺧﻂ ﺑﺎﯾﺪ ﻧﻮﺷﺘﻪ ﺷﻮد ﺗﺎ ﻣﻄﻤﺌﻦ ﺷﻮﯾﻢ اﯾﻦ ﮐﺪ روی اﻧﻮاع ﻣﺮورﮔﺮھﺎ ﻋﻤ ﻞ ﻣﯿﮑﻨﺪ‬ · ‫ ( ﻗﺮار ﻣﯿﮕﯿﺮد و‬memeory stream )‫ در داﺧﻞ ﯾﮏ ﺣﺎﻓﻈﻪ‬Session ‫در ﻧﮫﺎﯾﺖ ﻋﮑﺲ داﺧﻞ‬ ‫ را ﺑﺮای اﯾﻨﮑﺎر اﺳﺘﻔﺎده‬BinaryWrite ‫ ﻧﻮﺷﺘﻪ ﻣﯿﺸﻮد. ﻣﺘﺪ‬response ‫ﻣﺤﺘﻮای ﺣﺎﻓﻈﻪ روی‬ .‫ﻣﯿﮑﻨﯿﻢ ﭼﺮا ﮐﻪ ﻋﮑﺲ، ﯾﮏ داده ﺑﺎﯾﻨﺮی اﺳﺖ‬ · ScribbleServic.asmx ‫ﺣﺎل ﻣﺎ اﺑﺰاری ﺑﺮای اﯾﺠﺎد اوﻟﯿ ﻪ ﻋﮑﺲ در ‪ session‬و ﻓﺮﺳﺘﺎدن آن ﺑ ﻪ ﺷﮑﻞ ‪ response‬دارﯾﻢ. ﻧﯿﺎز‬ ‫ﺑﻌﺪی ﻣﺎ ﻣﺘﺪی اﺳﺖ ﮐﻪ ﺧﻮد ﻋﮑﺲ را ﻋﻮض ﮐﻨﺪ. ﻣﺎ از ﮐﻼﯾﻨﺖ اﻧﺘﻈﺎر ﺻﺪا ﮐﺮدن ‪،web service‬‬ ‫‪ ScribbleServic.asmx‬را ﺑﺮای ﮐﺸﯿﺪن ﺧﻄﮫﺎ دارﯾﻢ.‬ ‫در ﻣﻨﻮی ‪ Website‬روی ‪ Add New Item‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﯾﺎ ﮐﻠﯿﺪھﺎی ‪ Ctrl + Shift + A‬را‬ ‫1.‬ ‫ﺑﻔﺸﺎرﯾﺪ.‬ ‫2.‬ ‫3.‬ ‫در ﭘﻨﺠﺮه ‪ Web Service ،Add New Item‬را اﻧﺘﺨﺎب و ﭘﺲ از ﻣﺸﺨﺺ ﮐﺮدن ﻧﺎم‬ ‫‪ ScribbleService.asmx‬ﮐﻠﯿﺪ ‪ ok‬را ﺑﻔﺸﺎرﯾﺪ. ﻣﻄﻤﺌﻦ ﺷﻮﯾﺪ ﮐﻪ ﮔﺰﯾﻨﻪ ‪Place Code in a‬‬ ‫‪ Separate File‬را ﻏﯿﺮ ﻓﻌﺎل اﺳﺖ.‬ ‫ﺧﻂ زﯾﺮ را ﺑ ﻪ ﮐﺪ اﺿﺎﻓﻪ ﮐﻨﯿﺪ:‬ ‫;‪Using System.Drawing‬‬ ‫در ﻗﺪم ﺑﻌﺪی ﺑﺎﯾﺪ ﯾﮏ ﮐﻼس ﺑﺮای ‪ point‬ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ. ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐ ﻪ ﻧﻤﯿﺘﻮاﻧﯿﻢ از‬ ‫4.‬ ‫‪ System.Drawing.Point‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ زﯾﺎر اﯾﻦ ﮐﻼس ‪ XML serializable‬ﻧﯿﺴﺖ. ﮐﺪ زﯾﺮ‬ ‫را درﺳﺖ ﻗﺒﻞ از ﻗﺴﻤﺖ ﺗﻌﺮﯾﻒ ﮐﻼس ‪ ScribbleService‬ﺑﮕﺬارﯾﺪ.‬ ‫‪public class Point‬‬ ‫{‬ ‫;‪public int X‬‬ ‫;‪public int Y‬‬ ‫;}‬ ‫در ﻧﮫﺎﯾﺖ، ﺑﺎﯾﺪ ﻣﺘﺪی ﺑﻨﻮﯾﺴﯿﻢ ﮐ ﻪ ﺑﺎ اﺳﺘﻔﺎده از ﻣﺠﻤﻮﻋﻪ ای از ﻧﻘﺎط، ﻧﻘﺎﺷﯽ ﮐﻨﺪ. وب‬ ‫5.‬ ‫ﻣﺘﺪ ‪ Draw‬ﺑ ﻪ ھﻤﯿﻦ ﻣﻨﻈﻮر ﺑ ﻪ ‪ web service‬اﺿﺎﻓﻪ ﻣﯿﮑﻨﯿﻢ.‬ ‫])‪[WebMethod(EnableSession = true‬‬ ‫)‪public void Draw(Point points‬‬ ‫{‬ ‫;]"‪Image scribbleImage = (Image)Session["Image‬‬ ‫)‪lock(scribbleImage‬‬ ‫{‬ using (Graphics g = Graphics.FromImage(scribbleImage)) using(Pen p = new Pen(Color.Black, 2)) { if (points.Length > 1) { int startX = points[0].X; int startY = points[0].Y; for (long i = 1; i < points.Length; i++) { g.DrawLine(p, startX, startY, points[i].X, points[i].Y); startX = points[i].X; startY = points[i].Y; } } } } } ‫ را‬session ‫ اﻣﮑﺎن دﺳﺘﺮﺳﯽ ﺑ ﻪ ﻣﺘﻐﯿﺮھﺎی‬WebMethod(EnableSession = true ) .‫ ﻣﯿﺪھﺪ‬web service ‫ﺑﻪ‬ .‫ﻋﮑﺲ ﺑ ﻪ ﺣﺎﻟﺖ ﻗﻔﻞ درﻣﯽ آﯾﺪ ﺗﺎ ﻣﺸﮑﻼت اﺳﺘﻔﺎده ھﻤﺰﻣﺎن ﭘﯿﺶ ﻧﯿﺎﯾﺪ‬ ‫ﺧﻮد ﻋﻤ ﻞ ﻧﻘﺎﺷﯽ، ﮐﺎﻣﻼ ﺳﺎده اﺳﺖ. ﺗﻨﮫﺎ ﮐﺎر ﻻزم وﺻﻞ ﮐﺮدن ﻧﻘﺎط ﺑ ﻪ ھﻤﺪﯾﮕﺮ‬ .‫اﺳﺖ‬ · · · Scribble.js client ‫ﺗﻤﺎم ﮐﺪھﺎﯾﯽ ﮐﻪ ﺑﺮای ﺳﻤﺖ ﺳﺮور اﺳﺖ، ﻧﻮﺷﺘﯿﻢ. ﺣﺎ ل ﻧﻮﺑﺖ ﺑﻪ اﺳﮑﺮﯾﭙﺘﯽ در ﺳﻤﺖ‬ .‫ ﺗﺤﻮﯾﻞ دھﺪ‬web service ‫دارﯾﻢ ﮐﻪ ﻧﻘﺎط را از روﯾﺪاد ﻣﻮس ﮔﺮﻓﺘﻪ و ﺑﻪ‬ .‫ را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‬ScriptLibrary ‫، ﻓﻮﻟﺪر‬solution explorer ‫در‬ .1 .‫ را ﺑﻔﺸﺎرﯾﺪ‬Ctrl + Shift + A ‫ ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ﯾﺎ‬Add New Item ‫ روی‬WebSite ‫در ﻣﻨﻮی‬ .2 ‫در ﭘﻨﺠﺮه ‪ Jscript File ،Add New Item‬را اﻧﺘﺨﺎب و ﻧﺎم را ‪ Scribble.js‬ﺗﻌﯿﯿﻦ ﮐﺮده و ‪ Ok‬را‬ ‫3.‬ ‫ﺑﻔﺸﺎرﯾﺪ. ﺑﺎ اﯾﻨﺎر ﻓﺎﯾﻞ ‪ Scribble.js‬را درون ﻓﻮﻟﺪر ‪ ScriptLibrary‬ﻗﺮار دادﯾﺪ.‬ ‫4.‬ ‫در ﻗﺪم ﺑﻌﺪی ﺑﺎﯾﺪ ﭼﻨﺪ ﻣﺘﻐﯿﺮ ﻋﻤﻮﻣﯽ ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ.‬ ‫‪//The HTML image element that is to be drawn‬‬ ‫;‪var image‬‬ ‫‪//The source of the image‬‬ ‫;‪var originalSrc‬‬ ‫‪//The number of iteration‬‬ ‫;0 = ‪var iter‬‬ ‫‪//The array of points‬‬ ‫;‪var points = null‬‬ ‫ﺗﻮﺿﯿﺤﺎت ﺑﺎﻻی ھﺮ ﺗﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ، ھﺪف ھﺮ ﮐﺪام را ﺗﻮﺿﯿﺢ ﻣﯿﺪھﺪ. ﻣﺘﻐﯿﺮ ‪ iter‬ﺑﺮای ﺗﻐﯿﯿﺮ ﻣﻨﺒﻊ‬ ‫ﻋﮑﺲ، ﺑﻌﺪ از ھﺮ ﺑﺎر درﺧﻮاﺳﺖ از ﺳﺮور اﺳﺖ. ﺑﺮای ﻣﺮورﮔﺮ ‪ image.src = image.src ، IE‬ﻋﮑﺲ‬ ‫را ﺑﺮوز ﻣﯿﺮﺳﺎﻧﺪ وﻟﯽ ھﻤﯿﻦ ﮐﺪ در ‪ Firefox‬ﮐﺎر ﻧﻤﯿﮑﻨﺪ. ﺑﺮای ﺣ ﻞ اﯾﻦ ﻣﺸﮑﻞ ﻣﺎ ﻣﺘﻐﯿﺮ ‪ iter‬را ﺗﻌﺮﯾﻒ‬ ‫و ﺑﻌﺪ از ھﺮ درﺧﻮاﺳﺖ ﮐﻼﯾﻨﺖ ﺑﻪ ﺳﺮور، ﯾﮑﯽ ﺑﻪ ﻣﻘﺪار آن اﺿﺎﻓﻪ ﻣﯿﮑﻨﯿﻢ. ﺑﺎ اﺿﺎﻓ ﻪ ﮐﺮدن اﯾﻦ ﻋﺪدﺑﻪ‬ ‫ﻣﺘﻐﯿﺮ ‪ ،originalSrc‬ﻣﺮورﮔﺮ ﻓﮑﺮ ﻣﯿﮑﻨﺪ ﮐ ﻪ ھﺮ ﺑﺎر ﺑﺎﯾﺪ اﻃﻼﻋﺎت ﺟﺪﯾﺪ را، ﺑﺠﺎی ﻋﮑﺲ ‪ Cache‬ﺷﺪه از‬ ‫ﺳﺮور ﺑﮕﯿﺮ د.‬ ‫5.‬ ‫ﯾﮏ ﻓﺎﻧﮑﺸﻨﻦ ﺑ ﻪ ﻧﺎم ‪ startStroke‬ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﯿﻢ ﺗﺎ در زﻣﺎن روﯾﺪاد ‪ mousedown‬اﺟﺮا ﺷﻮد.‬ ‫)(‪function startStroke‬‬ ‫{‬ ‫;)(‪points = new Array‬‬ ‫;‪window.event.returnValue = false‬‬ ‫}‬ ‫وﻗﺘﯽ ﮐﺎرﺑﺮ ﺷﺮوع ﺑ ﻪ ﻧﻘﺎﺷﯽ ﻣﯿﮑﻨﺪ. ﻣﺎ ﯾﮏ ﻣﺠﻤﻮﻋ ﻪ از ﻧﻘﺎط ﻣﯿﺴﺎزﯾﻢ)ﺧﻂ اول(. ﺧﻂ دوم ﻋﻤﻞ ﭘﯿﺶ ﻓﺮض‬ ‫ﺑﺮای ﯾﮏ ﻋﮑﺲ، ﺷﺮوع ﻋﻤﻞ ‪mousedown‬روﯾﺪاد را ﺑﺎﻃ ﻞ ﻣﯿﮑﻨﺪ. اﯾﻦ ﮐﺎر ﻻزم اﺳﺖ زﯾﺮا ﭘﯿﺶ ﻓﺮض روﯾﺪاد‬ ‫و ﺟﻠﻮﮔﯿﺮی از ﭘﯿﺶ آﻣﺪن روﯾﺪادھﺎی دﯾﮕﺮ اﺳﺖ.‪Drag & Drop‬‬ ‫6. وﻗﺘﯽ ﻋﻤﻞ ﻧﻘﺎﺷﯽ ﺑﺎ ﺻﺪا ﺷﺪن روﯾﺪاد ‪mouseup‬ﯾﺎ روﯾﺪاد ‪ mouseout‬ﺗﻤﺎم ﻣﯿﺸﻮد، ﻣﯿﺒﺎﯾﺪ ﻣﺘﺪ ‪web‬‬ ‫‪ service‬را ﺻﺪا ﮐﻨﯿﻢ. اﯾﻦ ﻋﻤﻠﯿﺎت ﺑﺎ ﻓﺎﻧﮑﺸﻦ ‪ endStroke‬اﻧﺠﺎم ﻣﯿﺸﻮد.‬ function endStroke() { if (!points || points.length < 2) return true; //Send the points to the webservice ScribbleService.Draw( points,onWebMethodComplete,onWebMethodTimeout,onWebMethodError); points = null; window.event.returnValue = false; } ‫ﻗﺴﻤﺖ ﺟﺎﻟﺐ اﯾﻦ ﮐﺪ ﺧﻂ‬ ScribbleService.Draw( points, onWebMethodComplete, onWebMethodTimeout, onWebMethodError); ‫ را ﺑﺼﻮرت ﻏﯿﺮھﻤﺰﻣﺎن ﺻﺪا ﻣﯿﺰﻧﺪ. اﯾﻦ ﻓﺎﻧﮑﺸﻦ ﺑﺼﻮرت اﺗﻮﻣﺎﺗﯿﮏ ﺗﻮﺳﻂ‬webservice ‫ از‬Draw ‫اﺳﺖ ﮐﻪ ﻣﺘﺪ‬ .‫ﻣﺤﯿﻂ اﻃﻠﺲ ﻗﺎﺑﻞ دﺳﺘﺮس اﺳﺖ‬ ‫ ﺻﺪا زده‬web service ‫ ﻓﺎﻧﮑﺸﻨﯽ اﺳﺖ ﮐﻪ در زﻣﺎن ﺑﻮﺟﻮد آﻣﺪن ﻣﺸﮑﻞ در‬onWebMethodError .7 ‫ از زﻣﺎن ﻣﺸﺨﺺ‬web service ‫ زﻣﺎﻧﯽ ﻓﻌﺎل ﻣﯿﺸﻮد ﮐﻪ ﺻﺪا زدن ﻣﺘﺪ‬onWebMethodTimeout ‫ﻣﯿﺸﻮد.و ﻣﺘﺪ‬ .( ‫ﻗﺎﺑﻞ ﺗﻨﻈﯿﻤﯽ ﺑﯿﺸﺘﺮ ﻃﻮ ل ﺑﮑﺸﺪ) اﯾﻦ زﻣﺎن در ﻓﺮﯾﻢ ورک اﻃﻠﺲ ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ اﺳﺖ‬ function onWebMethodError(fault) { alert("Error occured:\n" + fault.get_message()); } function onWebMethodTimeout() { alert("Timeout occured"); } ‫ ﺑﺎ ﻣﻮﻓﻘﯿﺖ اﻧﺠﺎم‬web method ‫ زﻣﺎﻧﯽ ﺻﺪا زده ﻣﯿﺸﻮد ﮐﻪ ﺻﺪا زدن‬onWebMehtodComplete ‫8. ﻣﺘﺪ‬ .‫ ﺷﻮد‬load ‫ﭘﺬﯾﺮﯾﺪ. در اﯾﻦ ﻣﺮﺣﻠ ﻪ ﻋﮑﺲ ﺑﺎﯾﺪ دوﺑﺎره‬ function onWebMethodComplete(result, response, context) { //We need to refresh the image var shimImage = new Image(200, 200); shimImage.src = originalSrc + "?" + iter++; shimImage.onload = function() { image.src = shimImage.src; } } ‫ ﻣﯿﺴﺎزﯾﻢ و ﻣﻨﺒﻊ آن را ﻣﻨﺒﻊ اﺻﻠﯽ ﻋﮑﺴﯽ را ﮐﻪ ﮐﺸﯿﺪﯾﻢ ﻗﺮار‬Image ‫ از ﻧﻮع‬shimImage ‫ﻣﺎ ﯾﮏ ﻣﺘﻐﯿﺮ‬ ‫ واﻗﻌﯽ را، ﺑﺮاﺑﺮ ﯾﮏ ﺷﯽ‬HTML ‫ ( ﻋﮑﺲ‬source ) ‫ﻣﯿﺪھﯿﻢ. وﻗﺘﯽ ﺷﯽ ﻋﮑﺲ ﺑﺎرﮔﺬاری ﻣﯿﺸﻮد، و ﻣﻨﺒﻊ‬ .‫ ﻣﻮﻗﺖ ﻗﺮار ﻣﯿﺪھﯿﻢ. اﯾﻦ ﮐﺎر ﺑﺮای ﺟﻠﻮﮔﯿﺮی از ﭘﺮش ﻋﮑﺲ اﻧﺠﺎم ﻣﯿﺸﻮد‬image ‫ اﻧﺠﺎم‬addPoints ‫ آراﯾﻪ ﻧﻘﺎط را ﭘﺮ ﮐﻨﯿﻢ. اﯾﻦ ﮐﺎر ﺑﺎر ﻓﺎﻧﮑﺸﻦ‬mousemove ‫9. ﻻزم اﺳﺖ ﮐﻪ زﻣﺎن روﯾﺪاد‬ .‫ﻣﯿﮕﯿﺮد‬ function addPoints() { if (points) { var point = { X : window.event.offsetX, Y : window.event.offsetY}; points.push(point); if (points.length == 3) { endStroke(); ‫;)(‪points = new Array‬‬ ‫;)‪points.push(point‬‬ ‫}‬ ‫;‪window.event.returnValue = false‬‬ ‫}‬ ‫}‬ ‫‪o‬‬ ‫ﻧﻘﻄ ﻪ ﺟﺪﯾﺪ ﺑﺎ اﺳﺘﻔﺎده از دو ﻣﺸﺨﺼﻪ ‪ offsetX‬و ‪ offsetY‬از ﺷﯽ روﯾﺪاد ﺳﺎﺧﺘﻪ ﺷﺪه‬ ‫و ﺳﭙﺲ ﺑ ﻪ آراﯾﻪ ‪ points‬اﺿﺎﻓ ﻪ ﻣﯿﺸﻮد. دو ﻣﺸﺨﺼﻪ ‪ offsetX‬و ‪ offsetY‬ﻣﻮﻗﻌﯿﺖ ﻧﺴﺒﯽ‬ ‫ﻣﻮس را در اﻟﻤﻨﺖ ‪HTML‬ی را ﻣﯿﺪھﺪ.‬ ‫‪o‬‬ ‫وﻗﺘﯽ ﻃﻮل آراﯾﻪ ﺑﻪ 3 رﺳﯿﺪ، ﻣﺎ ﺑﺼﻮرت اﺗﻮﻣﺎﺗﯿﮏ درﺧﻮاﺳﺖ را ﺑﻪ ﺳﺮور ﻣﯿﻔﺮﺳﺘﯿﻢ ﺗﺎ‬ ‫ﻧﻘﺎﺷﯽ اﻧﺠﺎم ﺷﻮد و آراﯾﻪ را ﺧﺎﻟﯽ ﻣﯿﮑﻨﯿﻢ. اﯾﻦ ﮐﺎر ﺑﺮای اﯾﻨﮑﻪ ﮐﺎرﺑﺮ در ﺣﯿﻦ ﺣﺮﮐﺖ ﻣﻮس،‬ ‫ﻧﻘﺎﺷﯽ را ﺑﺒﯿﻨﻨﺪ اﻧﺠﺎم ﻣﯿﺪھﯿﻢ.‬ ‫01. در اﻧﺘﮫﺎ ﻓﺎﻧﮑﺸﻨﮫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﯾﺪ ﺑﻪ روﯾﺪادھﺎ ﺑﭽﺴﺒﻨﺪ.‬ ‫)(‪function pageLoad‬‬ ‫{‬ ‫;)"‪var surface = document.getElementById("drawingSurface‬‬ ‫;]0[)"‪image = surface.getElementsByTagName("IMG‬‬ ‫;‪originalSrc = image.src‬‬ ‫;)‪surface.attachEvent("onmousedown", startStroke‬‬ ‫;)‪surface.attachEvent("onmouseup", endStroke‬‬ ‫;)‪surface.attachEvent("onmouseout", endStroke‬‬ ‫;)‪surface.attachEvent("onmousemove", addPoints‬‬ ‫}‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫ﻓﺎﻧﮑﺸﻦ ‪ pageLoad‬ﯾﮏ ﻓﺎﻧﮑﺸﻦ ﻣﺨﺼﻮص اﺳﺖ ﮐﻪ ﺑﻌﺪ از ﺑﺎرﮔﺬاری ﮐﺎﻣﻞ ﻓﺮﯾﻢ ورک اﻃﻠﺲ اﺟﺮا ﻣﯿﺸﻮد.‬ ‫ﻣﺎ از اﯾﻦ ﻓﺎﻧﮑﺸﻦ ﺑﺠﺎ ی روﯾ ﺪادھﺎی ﻣﻌﻤﻮل ‪ window‬ﯾﺎ ‪ b ody‬اﺳﺘﻔﺎده ﻣﯿﮑﻨﯿﻢ ﺗﺎ ﻣﻄﻤﺌﻦ ﺷﻮﯾﻢ ﮐﻪ ﻓﺮ ﯾﻢ‬ ‫ورک ﺑﺎرﮔﺬاری ﺷﺪه اﺳﺖ.‬ ‫اﻟﻤﻨﺖ ﻋﮑﺲ درون ‪ HTML‬درون ﯾ ﮏ ﺗ ﮓ ‪ d iv‬ﻗﺮار ﮔﺮﻓﺘ ﻪ ﮐﻪ ﻧﺎم آ ن ‪ drawingSurface‬اﺳﺖ. اﻧﺪازه‬ ‫آن دﻗﯿﻘﺎ ﺑﺮاﺑﺮ ﻋﮑﺲ ﻣﺎ اﺳﺖ ) 002 در 002( ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺎ ﺧﯿﺎل راﺣ ﺖ ﻣﯿﺘﻮاﻧﯿﻢ روﯾﺪادھﺎ را ﺑﻪ ‪div‬‬ ‫ﺑﭽﺴﺒﺎﻧﯿﻢ.‬ Default.aspx :‫ ﻗار ﺑﮕﯿﺮﻧﺪ. ﮐﺪ اﯾﻦ ﺻﻔﺤﻪ ﺑﻪ ﺷﺮح ذﯾ ﻞ اﺳﺖ‬Default.aspx ‫ﮐﺎﻣﭙﻮﻧﻨﺘﮫﺎی ﻣﺎ ﺑﺎﯾﺪ درون ﺻﻔﺤﻪ‬ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Atlas Scribble Sample</title> </head> <body> <form id="form1" runat="server"> <Atlas:ScriptManager ID="AtlasScriptManager" runat="server" EnableScriptComponents="False" > <Services> <Atlas:ServiceReference Path="ScribbleService.asmx" /> </Services> <Scripts> <Atlas:ScriptReference Path="ScriptLibrary/Scribble.js" /> </Scripts> </Atlas:ScriptManager> <div id="drawingSurface" style="border:solid 1px black;height:200px;width:200px"> <img alt="Scribble" src="ScribbleImage.ashx" style="height:200px;width:200px" galleryimg="false" /> </div> ‫>‪</form‬‬ ‫>‪</body‬‬ ‫>‪</html‬‬ ‫ﻣﮫﻤﺘﺮﯾﻦ ھﺪف اﯾﻦ ﺻﻔﺤﻪ ﮐﻨﺘﺮل ﺳﺮوری ‪ atlas:ScriptManager‬اﺳﺖ. ﮐﻨﺘﺮل ﺳﺮوری ‪ScriptManager‬‬ ‫ﻣﺴﻮو ل اﯾﺠﺎد ﮐﺪھﺎی ﺳﻤﺖ ﮐﻼﯾﻨﺘﯽ ﺑﺮای اﻃﻠﺲ و ھﺮ ﮔﻮﻧ ﻪ ﮐﺪ ﻣﺮﺑﻮط ﺑ ﻪ ‪ web service‬اﺳﺖ. ﺑﺎ ھﻢ‬ ‫اﺳﺘﻔﺎده از اﯾﻦ ﮐﻨﺘﺮ ل را در ‪ Default.aspx‬ﺑﺮرﺳﯽ ﻣﯿﮑﻨﯿﻢ:‬ ‫ﻣﺸﺨﺼﻪ ‪ EnableScriptComponents‬ﺑﺮاﺑﺮ ﺑﺎ ‪ false‬ﻣﯿﺸﻮد. اﯾﻦ ﮐﺎرﺑﺎﻋﺚ ﻣﯿﺸﻮد ﮐ ﻪ ﺑﺠﺎی‬ ‫1.‬ ‫‪ Atlas.js‬از ‪ A tlasRuntime.js‬اﺳﺘﻔﺎده ﺷﻮد. ﻣﺎ ﻧﺴﺨﻪ ﺟﻤﻊ و ﺟﻮر ﺗﺮ ﻓﺮﯾﻢ ورک را ﺗﺮﺟﯿﺢ‬ ‫ﻣﯿﺪھﯿﻢ زﯾﺮا اﺳﺘﻔﺎده ا ی از ﮐﺎﻣﭙﻮﻧﻨﺘﮫﺎ ﯾﺎ ﮐﻨﺘﺮﻟﮫﺎی اﻃﻠﺲ ﻧﮑﺮده اﯾﻢ.‬ ‫ﻣﺎ ﯾﮏ ‪ serviceReference‬ﺑﻪ ‪ web service‬ﺧﻮدﻣﺎن، ‪ ScribbleService.asmx‬داده اﯾﻢ.اﯾﻦ‬ ‫2.‬ ‫ﮐﺎر ‪ URL‬دﺳﺘﺮﺳﯽ ﺑﻪ اﯾﻦ ‪ web service‬را درون اﺳﮑﺮﯾﭙﺘﮫﺎی ﮐﻼﯾﻨﺘﯽ ﻣﯿﮕﺬارد.‬ ‫3.‬ ‫ھﻤﭽﻨﯿﻦ ‪ Scribble.js‬را ﻧﯿﺰ ﻣﻌﺮﻓﯽ ﮐﺮده اﯾﻢ.‬ ‫اﯾﻦ ﺻﻔﺤﻪ ﺗﻤﺎم ﮐﺎرھﺎی ﻣﺎ را ﯾﮏ ﺟﺎ ﻣﯿﮑﻨﺪ. ﺣﺎ ل ﺧﻮد ﺑﺎﯾﺪ ﻧﺘﯿﺠﻪ ﮐﺎر را ﺑﺎ اﺟﺮا ﮐﺮدن اﯾﻦ ﮐﺪھﺎ ﺑﺒﯿﻨﯿﺪ.‬ ‫ﺟﺎدوی اﻃﻠﺲ‬ ‫ﮐﺎرھﺎﯾﯽ ﮐ ﻪ اﻃﻠﺲ ﺑﺮای ﻣﺎ اﻧﺠﺎم ﻣﯿﺪھﺪ:‬ ‫اﻃﻠﺲ ﺑﻪ ﻣﺎ اﺟﺎزه ﻣﯿﺪھﺪ ﻧﺮم اﻓﺰارھﺎی وﺑﯽ را ﺑﺪون ﻧﮕﺮاﻧﯽ از ﻧﻮع ﻣﺮورﮔﺮھﺎ ﺑﻨﻮﯾﺴﯿﻢ. ﺻﺪا‬ ‫1.‬ ‫زدن ‪ web service‬و اﺳﺘﻔﺎده از روﯾﺪادھﺎی ﺳﻤﺖ ﮐﻼﯾﻨﺖ روی ھﺮ دو ﻣﺮورﮔﺮ ‪ IE‬و ‪Firefox‬‬ ‫ﮐﺎر ﻣﯿﮑﻨﺪ. اﻃﻠﺲ ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﯿﮏ ﺗﻌﺮﯾ ﻔﺎت ﻻزم را روی ﺷﯽ ھﺎی ‪ Firefox‬اﻧﺠﺎم ﻣﯿﺪھﺪ ﺗﺎ‬ ‫آﻧﮫﺎ ﺷﺒﯿ ﻪ ﺷﯽ ھﺎی ‪ IE‬ﺷﻮﻧﺪ. ﺑﺮا ی دﯾﺪن ﭼﮕﻮﻧﮕﯽ اﯾﻦ ﮐﺎر ﻓﺎﯾﻠﯽ ‪ AtlasCompat.js‬را‬ ‫ﺑﺒﯿﻨﯿﺪ.‬ ‫2.‬ ‫اﻃﻠﺲ ﺑﻪ ﻃﻮر اﺗﻮﻣﺎﺗﯿﮏ ﯾﮏ ﮐﺪ ‪ JavaScript‬ﺑﺮای ‪ web service‬ﻣﺎ ﻣﯿﺴﺎزد.‬ ‫ﮐﺠﺎ ھﺴﺘﯿﻢ‬ ‫ﻣﺎ دﯾﺪﯾﻢ ﮐ ﻪ ﭼﮕﻮﻧﻪ ﻣﯿﺘﻮاﻧﯿﻢ ﺑﺎ ﮐﻤﮏ اﻃﻠﺲ ﯾﮏ ‪ web service‬را از ﺳﻤﺖ ﮐﻼﯾﻨﺖ ﺻﺪا ﺑﺰﻧﯿﻢ ﺑﺪون ﻧﮕﺮاﻧﯽ از‬ ‫ﻧﻮع ﻣﺮورﮔﺮ.‬ ‫داﻧﻠﻮد و اﺟﺮای ﮐﺪ‬ ‫1.‪ Atlas Web Site‬را داﻧﻠﻮد و ﻧﺼﺐ ﮐﻨﯿﺪ.‬ ‫2. ﺑﻌﺪ از اﯾﻨﮑﺎر ﯾﮏ ‪ web site‬اﻃﻠﺲ را ﺑﺴﺎزﯾﺪ ) از ﻣﻨﻮی ‪ File->New‬و اﻧﺘﺨﺎب ‪ASP.NET ‘Atlas’ Web‬‬ ‫‪( Site‬‬ ‫3. ﻓﺎﯾﻞ ﮐﺪ ﻣﺎ را ﺑﻌﺪ از داﻧﻠﻮد، ﺑﺎز ﮐﺮده و در ﯾﮏ ﻓﻮﻟﺪر ﺟﺪﯾﺪ ﺑﺮﯾﺰﯾﺪ.‬ ‫4. در ﻣﻨﻮی ‪ Website‬ﮔﺰﯾﻨ ﻪ ‪ Add Existing Item‬را اﻧﺘﺨﺎب و ﻓﺎﯾﻠﮫﺎی ‪ ScribbleService.asmx‬و‬ ‫‪ ScribbleImage.ashx‬را ﺑﻪ رﯾﺸ ﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﮐﻨﯿﺪ. و ﻓﺎﯾﻠﮫﺎی ‪ Scribble.js‬و‬ ‫‪ ScriptLibary‬را ﺑﻪ ﻓﻮﻟﺪر ‪ ScriptLibrary‬اﺿﺎﻓﻪ ﮐﻨﯿﺪ.‬ ‫5. ‪ Web site‬را اﺟﺮا ﮐﻨﯿﺪ‬ ‫ﺑﺮﻧﺎﻣﻪ ھﺎی و ب ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ‪ : AJAX‬و ‪Atlas‬‬ ‫ﻳﻜﯽ از وﻳﮋ ﮔﯽ ھﺎی ﻣﮫﻢ ﺑﺮﻧﺎﻣﻪ ھﺎی وب ، ﺗﺒﻌﯿﺖ آﻧﺎن از ﻣﻌﻤﺎری "ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه - ﺳﺮوﻳﺲ دھﻨﺪه "اﺳﺖ‬ ‫. اﻳﻦ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﻛﻪ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﻣﻨﻈﻮر ﺗﺤﻘﻖ ﭘﺮدازش ھﺎی ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ دھﻨﺪه و ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه از ﻓﻦ آوری ھﺎی ﻣﺘﻌﺪدی اﺳﺘﻔﺎده ﻧﻤﺎﻳﻨﺪ .ﻳﻜﯽ از ﻧﻜﺎت ﻣﮫﻢ در ﺧﺼﻮص‬ ‫اﻧﺠﺎم ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻣﯿﺰان واﺑﺴﺘﮕﯽ آﻧﺎن ﺑ ﻪ اﻃﻼﻋﺎت ﻣﻮﺟﻮد در ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫دھﻨﺪه اﺳﺖ . ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ ، اﺟﺮای ﻳﻚ ‪ event handler‬در ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺗﺎ ﭼ ﻪ ﻣﯿﺰان واﺑﺴﺘﻪ ﺑﻪ ﻛﺪ‬ ‫ﺳﻤﺖ ﺳﺮوﻳﺲ دھﻨﺪه اﺳﺖ و ﺑﻪ ﻣﻨﻈﻮر اﻧﺠﺎم آن ﭼﻪ ﻣﯿﺰان داده ﻣﯽ ﺑﺎﻳﺴﺖ ﺑﯿﻦ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه و‬ ‫ﺳﺮوﻳﺲ دھﻨﺪه ﻣﺒﺎدﻟﻪ ﮔﺮدد ؟ ﺻﺮﻓﻨﻈﺮ از اﻳﻦ ﻛ ﻪ ﺑﻪ ﺳﻮال ﻓﻮق ﭼﻪ ﭘﺎﺳﺨﯽ داده ﻣﯽ ﺷﻮد ، واﻗﻌﯿﺖ اﻳﻦ‬ ‫اﺳﺖ ﻛﻪ ﺑ ﻪ ﻣﻨﻈﻮر ﻣﺪﻳﺮﻳﺖ روﻳﺪادھﺎی ﻣﺤﻘﻖ ﺷﺪه در ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻣﯽ ﺑﺎﻳﺴﺖ ﻣﻠﺰوﻣﺎت ﻣﻮرد‬ ‫ﻧﯿﺎز اﻳﺠﺎد ﺗﺎ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺘﻮاﻧﻨﺪ ﺑﺎ اﺳﺘﻔﺎده از آﻧﺎن ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه را ﻣﺪﻳﺮﻳﺖ ﻧﻤﺎﻳﻨﺪ.‬ ‫ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه از ﮔﺬﺷﺘﻪ ﺗﺎﻛﻨﻮن‬ ‫ﺑﺎ ﺗﻮﺟ ﻪ ﺑﻪ اﻳﻦ ﻛﻪ ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه در ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب ﻣﯽ ﺑﺎﻳﺴﺖ ﻣﺴﺘﻘﻞ از ﻧﻮع ﭘﻠﺖ‬ ‫ﻓﺮم ﺑﺎﺷﻨﺪ ، ﺑﺪﻳﮫﯽ اﺳﺖ ﻛﻪ ﺗﻤﺎﻣﯽ ﺗﻼش ھﺎ ی اﻧﺠﺎم ﺷﺪه در اﻳﻦ ﻋﺮﺻﻪ ، ﻣﯽ ﺑﺎﻳﺴﺖ ﻣﺘﻤﺮﻛﺰ ﺑﺮ روی‬ ‫ﺑﺮﻧﺎﻣﻪ ھﺎی ﻣﺮورﮔﺮ ﺑﺎﺷﺪ ﺗﺎ ﺑﺎ اﻳﺠﺎد ﭘﺘﺎﻧﺴﯿﻞ ھﺎﺋﯽ در آﻧﮫﺎ ، اﻣﻜﺎن اﻧﺠﺎم ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫ﮔﯿﺮﻧﺪه ﻓﺮاھﻢ ﮔﺮدد . ﻇﮫﻮر زﺑﺎن ھﺎی اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﯽ ﻧﻈﯿﺮ ﺟﺎوااﺳﻜﺮﻳﭙﺖ و ﺗﺠﮫﯿﺰ ﻣﺮورﮔﺮھﺎ ﺑ ﻪ ﺑﺮﻧﺎﻣ ﻪ ھﺎی‬ ‫ﻣﻔﺴﺮ ﻣﺮﺑﻮﻃ ﻪ از ﺟﻤﻠ ﻪ اﻗﺪاﻣﺎت ﻋﻤﻠﯽ دراﻳﻦ ﻋﺮﺻﻪ اﺳﺖ . اﺳﺘﻔﺎده از زﺑﺎن ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﺑﻪ ﻣﻨﻈﻮر ﻛﺪﻳﻨﮓ‬ ‫ﭘﺮدازش ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه دارای ﻗﺪﻣﺘﯽ ﭼﻨﺪﻳﻦ ﺳﺎﻟ ﻪ اﺳﺖ . در اداﻣﻪ ، ﻗﺎﺑﻠﯿﺖ ھﺎی ﺟﺪﻳﺪی ﺑﻪ‬ ‫ﻣﺮورﮔﺮھﺎ اﺿﺎﻓﻪ ﮔﺮدﻳﺪ ﺗﺎ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺘﻮاﻧﻨﺪ ﺑ ﻪ ﻛﻤﻚ آﻧﺎن ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه را اﻳﺠﺎد‬ ‫ﻧﻤﺎﻳﻨﺪ . ھﻢ اﻳﻨﻚ ، ﺗﻤﺎﻣﯽ ﻣﺮورﮔﺮھﺎی ﻣﺘﺪاول از ﻳﻚ ﻣﺪل ﺷﯽ ﮔﺮاء ﻣﻮﺳﻮم ﺑﻪ ( ‪ DOM‬ﺑﺮﮔﺮﻓﺘ ﻪ از ‪document‬‬ ‫) ‪object model‬اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﻨﺪ و ﺗﻌﺪاد اﻧﺪﻛﯽ از آﻧﮫﺎ از ﻳﻚ وﻳﮋ ﮔﯽ ﺟﺪﻳﺪ ﺑﺎ ﻧﺎم ‪ XMLHTTP‬اﺳﺘﻔﺎده ﻣﯽ‬ ‫ﻧﻤﺎﻳﻨﺪ ﻛ ﻪ ﺑ ﻪ ﻛﻤﻚ آن ، ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪﮔﺎن و ﺳﺮوﻳﺲ دھﻨﺪﮔﺎن ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺪون ﻧﯿﺎز ﺑﻪ اﻧﺠﺎم ﻳﻚ ‪postback‬‬ ‫ﻛﺎﻣﻞ و ‪ round trip‬ﺑﺎ ﻳﻜﺪﻳﮕﺮ و ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻧﻤﺎﻳﻨﺪ .‬ ‫‪ ،XMLHTTP‬ﺷﺎﻣﻞ ﻣﺠﻤﻮﻋﻪ ای ( ‪ API‬راﺑﻂ ﺑﺮﻧﺎﻣ ﻪ ﻧﻮﻳﺴﯽ ( اﺳﺖ ﻛﻪ اﻣﻜﺎن ارﺳﺎل و ﻳﺎ درﻳﺎﻓﺖ داده ﺑﻪ‬ ‫ﺻﻮرت ﺑﺎﻳﻨﺮی ، ‪ HTML‬و ‪ XML‬را از ﺳﺮوﻳﺲ دھﻨﺪﮔﺎن وب ﺑﺮ روی اﻳﻨﺘﺮﻧﺖ و ﺑﻪ ﻛﻤﻚ ﭘﺮوﺗﻜﻞ ‪ HTTP‬ﻓﺮاھﻢ ﻣﯽ‬ ‫ﻧﻤﺎﻳﺪ . در ﻣﻮاردی ﻛ ﻪ ﻧﯿﺎز ﺑ ﻪ داده ﻣﻮﺟﻮد در ﺳﻤﺖ ﺳﺮوﻳﺲ دھﻨﺪه ﻣﯽ ﺑﺎﺷﺪ ، ‪ XMLHTTP‬ﺑ ﻪ ﺻﻮرت ﭘﯿﻮﺳﺘﻪ‬ ‫اﻗﺪام ﺑﻪ ارﺳﺎل درﺧﻮاﺳﺖ ﺧﻮد ﺑﺮای ﺳﺮوﻳﺲ دھﻨﺪه ﻣﯽ ﻧﻤﺎﻳﺪ ﺗﺎ آﺧﺮﻳﻦ اﻃﻼﻋﺎت را ﺑﺪون ﻧﯿﺎز ﺑﻪ ‪refresh‬‬ ‫ﻛﺮدن ﻣﺪام ﻣﺮورﮔﺮھﺎ ، ﺑﺎزﻳﺎﺑﯽ ﻧﻤﺎﻳﺪ . در واﻗﻊ ، ﺑﻪ ﻛﻤﻚ ﻓﻦ آوری ﻓﻮق ، ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪﮔﺎن ﻗﺎدر ﺑ ﻪ ﻣﺒﺎدﻟ ﻪ‬ ‫ﻏﯿﺮھﻤﺰﻣﺎن ﺑﺎ ﺳﺮوﻳﺲ دھﻨﺪه ﺑﻮده و ﻣﯽ ﺗﻮاﻧﻨﺪ اﻗﺪام ﺑﻪ ارﺳﺎل و ﻳﺎ درﻳﺎﻓﺖ داده ‪ XML‬ﺑﺪون ﻧﯿﺎز ﺑ ﻪ اﻧﺠﺎم ﻳﻚ‬ ‫‪round trip‬ﻛﺎﻣ ﻞ ﻛﻪ ﺑﺎﻋﺚ ﺗﻮﻟﯿﺪ ﻣﺠﺪد ﻳﻚ ﺻﻔﺤﻪ ﻣﯽ ﮔﺮدد ، ﻧﻤﺎﻳﻨﺪ .‬ ‫ﻣﺎﺣﺼﻞ اﻳﻦ ﺗﺤﻮﻻت ، ﻇﮫﻮر ﻧﺴﻞ ﺟﺪﻳﺪی از ﺑﺮﻧﺎﻣﻪ ھﺎ ی وب ﻧﻈﯿﺮ ‪ M icrosoft VirtualEarth‬و ‪Microsoft‬‬ ‫‪ Windows Live‬اﺳﺖ . اﻳﺠﺎد ﭼﻨﯿﻦ ﺑﺮﻧﺎﻣ ﻪ ھﺎی وﺑﯽ ﻛﺎر ﺳﺎده ای ﻧﺨﻮاھﺪ ﺑﻮد و ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﻣﯽ ﺑﺎﻳﺴﺖ‬ ‫ﺷﻨﺎﺧﺖ ﻣﻨﺎﺳﺒﯽ ﻧﺴﺒﺖ ﺑ ﻪ ﺟﺎوااﺳﻜﺮﻳﭙﺖ و ﻣﺪل ‪ DOM‬داﺷﺘﻪ ﺑﺎﺷﻨﺪ ﻛ ﻪ ﻣﻤﻜﻦ اﺳﺖ در ھﺮ ﻣﺮورﮔﺮ ﻣﺘﻔﺎوت‬ ‫ﺑﺎﺷﺪ . ﻋﻼوه ﺑﺮ اﻳﻦ ، ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﺗﻤﺎﻣﯽ وﻳﮋ ﮔﯽ ھﺎی ﻳﻚ زﺑﺎن ﺷﯽ ﮔﺮاء را اراﺋ ﻪ ﻧﻤﯽ ﻧﻤﺎﻳﺪ و ﺑﺴﯿﺎری از‬ ‫ﻣﻠﺰوﻣﺎت ﻣﻮرد ﻧﯿﺎز ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺮﻧﺎﻣﻪ ھﺎی وب در ﻓﺮﻳﻤﻮر ك دات ﻧﺖ را ﺗﺎﻣﯿﻦ ﻧﻤﯽ ﻧﻤﺎﻳﺪ ) ﻧﻈﯿﺮ ) ‪type-safe‬‬ ‫.‬ ‫اﻳﺠﺎد ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب ﺑﺎ ﺗﺎﻛﯿﺪ ﺑﺮ اﻧﺠﺎم ﭘﺮدازش ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻧﯿﺎزﻣﻨﺪ ﻣﻠﺰوﻣﺎﺗﯽ ﻧﻈﯿﺮ ﻳﻚ زﺑﺎن‬ ‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ و ﭘﻠﺖ ﻓﺮم ﭘﯿﺎده ﺳﺎزی ﺟﺪﻳﺪ اﺳﺖ .‬ ‫‪AJAX‬ﮔﺮﻓﺘﻪ از ‪Asynchronous JavaScript and XML‬‬ ‫ﭘﯿﺎده ﺳﺎزی ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب ﺑﺎ اﺳﺘﻔﺎده از ﻓﻦ آوری ھﺎی اﺷﺎره ﺷﺪه ) اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﯽ ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫ﮔﯿﺮﻧﺪه و ﻣﺒﺎدﻟﻪ ﻏﯿﺮھﻤﺰﻣﺎن ﺑﺎ ﺳﺮوﻳﺲ دھﻨﺪه ) ، ‪ AJAX‬ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد ‪ ، . AJAX‬ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن را ﻗﺎدر ﺑﻪ‬ ‫ﺗﻮﻟﯿﺪ ﺻﻔﺤﺎﺗﯽ ﻣﯽ ﻧﻤﺎﻳﺪ ﻛﻪ از ﺗﻮان ﭘﺎﺳﺨﮕﻮﺋﯽ ﺑﺴﯿﺎر ﻣﻄﻠﻮﺑﯽ در ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻣﺘﻨﺎﺳﺐ ﺑﺎ روﻳﺪاد‬ ‫اﻳﺠﺎده ﺷﺪه ، ﺑﺮﺧﻮردار ﻣﯽ ﺑﺎﺷﻨﺪ . ﭼﺮاﻛﻪ آﻧﮫﺎ از اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ دھﻨﺪه ﺑﺮای دﺳﺘﯿﺎﺑﯽ و‬ ‫ﻣﺪﻳﺮﻳﺖ ﻋﻨﺎﺻﺮ ﺑﺨﺶ راﺑﻂ ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﻨﺪ . ﻋﻼوه ﺑﺮ اﻳﻦ ، ﺑﺎ ﺗﻮﺟ ﻪ ﺑﻪ ﻣﺒﺎدﻟﻪ ﻏﯿﺮھﻤﺰﻣﺎن داده ﺑﻪ‬ ‫ﻣﻨﻈﻮر ارﺳﺎل و درﻳﺎﻓﺖ داده ، اﻣﻜﺎن اﻧﺠﺎم ﻋﻤﻠﯿﺎت ﻣﻮرد ﻧﻈﺮ ﺑﺮ روی داده ﺑﺪون وﻗﻔﻪ و ازدﺳﺖ دادن ‪state‬‬ ‫وﺟﻮد ﺧﻮاھﺪ داﺷﺖ . ‪ Microsoft Virtual Earth‬و ﺑﺮﻧﺎﻣ ﻪ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻧﺎﻣﻪ ھﺎی اﻟﻜﺘﺮوﻧﯿﻜﯽ ‪OutlookWeb‬‬ ‫‪ ، Access‬دو ﻧﻤﻮﻧﻪ از ﺑﺮﻧﺎﻣﻪ ھﺎی ﺳﺒﻚ ‪ ، AJAX‬ﻣﯽ ﺑﺎﺷﻨ ﺪ .‬ ‫: ‪Atlas‬ﺗﻼﺷﯽ در ﺟﮫﺖ اﻳﺠﺎد ﻳﻚ ﭘﻠﺖ ﻓﺮم ﭘﯿﺎده ﺳﺎزی ﺟﺎﻣﻊ‬ ‫ﻓﻦ آوری ﺟﺪﻳﺪ ‪ ASP.NET‬ﺑﺎ ﻧﺎم ‪ ، A tlas‬ﻣﺠﻤﻮﻋ ﻪ ای از ﻓﻦ آوری ھﺎی ﻣﺎﻳﻜﺮوﺳﺎﻓﺖ را ﺷﺎﻣ ﻞ ﻣﯽ ﺷﻮد ﻛ ﻪ ﺑﺎ‬ ‫ﺗﻤﺮﻛﺰ ﺑﺮ روی اﺻﻮ ل ‪ ، AJAX‬ﺳﻌﯽ در ﺗﻮﺳﻌﻪ و ﺑﮫﺒﻮد آن را دارد .‬ ‫‪ ،Atlas‬ﻳﻚ ﻓﻦ آوری ﺟﺪﻳﺪ در ﻋﺮﺻﻪ ﭘﯿﺎده ﺳﺎزی ﺑﺮﻧﺎﻣﻪ ھﺎی وب ‪ ASP.NET‬اﺳﺖ ﻛﻪ ﻛﺘﺎﺑﺨﺎﻧﻪ ھﺎی اﺳﻜﺮﻳﭙﺖ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه را ﺑﺎ ﻓﺮﻳﻤﻮرك ﭘﯿﺎده ﺳﺎزی ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ دھﻨﺪه 0.2 ‪ ASP.NET‬ﺗﺮﻛﯿﺐ ﻣﯽ ﻧﻤﺎﻳﺪ . در‬ ‫واﻗﻊ ، ‪ A tlas‬ﺑﻪ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﻳﻚ ﭘﻠﺖ ﻓﺮم ﻣﻨﺎﺳﺐ ﺑﻪ ﻣﻨﻈﻮر ﭘﯿﺎده ﺳﺎزی ﺻﻔﺤﺎت وب ﻣﺒﺘﻨﯽ‬ ‫ﺑﺮ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه را اراﺋ ﻪ ﻣﯽ ﻧﻤﺎﻳﺪ ﻛ ﻪ ﻗﺒﻼ" ﻣﺸﺎﺑ ﻪ آن در ﺧﺼﻮص ﺻﻔﺤﺎت وب ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ دھﻨﺪه‬ ‫ﺗﻮﺳﻂ ‪ A SP.NET‬اراﺋﻪ ﺷﺪه ﺑﻮد . ﺑﺎ ﺗﻮﺟﻪ ﺑ ﻪ اﻳﻦ ﻛﻪ ‪ ، A tlas‬ﺑﻪ ﻋﻨﻮان ﻳﻚ ﭘﺘﺎﻧﺴﯿﻞ اﺿﺎﻓﻪ در ﻛﻨﺎر ‪ASP.NET‬‬ ‫ﻣﻄﺮح ﻣﯽ ﺑﺎﺷﺪ ، ﺑﺪﻳﮫﯽ اﺳﺖ ﻛﻪ ﻛﺎﻣﻼ" ﺳﺎزﮔﺎر ﺑﺎ ﺳﺮوﻳﺲ ھﺎی ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ دھﻨﺪه ﺑﺎﺷﺪ .‬ ‫ﺑﺎ اﺳﺘﻔﺎده از ‪ ، A tlas‬ﻣﯽ ﺗﻮان ﺑﺨﺶ ﻗﺎﺑ ﻞ ﺗﻮﺟﮫﯽ از ﭘﺮدازش ھﺎی ﻣﻮرد ﻧﯿﺎز ﻳﻚ ﺑﺮﻧﺎﻣﻪ را ﺑﻪ ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫ﮔﯿﺮﻧﺪه اﻧﺘﻘﺎل داد . ) ‪ ( fat-client‬در ﭼﻨﯿﻦ ﻣﻮاردی ، اﻣﻜﺎن ارﺗﺒﺎط ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺑﺎ ﺳﺮوﻳﺲ دھﻨﺪه در‬ ‫‪background‬ﺮاھﻢ ﻣﯽ ﮔﺮدد. ﻣﺎﺣﺼﻞ اﻳﻦ ﻓﻦ آوری ، اﻳﺠﺎد ﺑﺮﻧﺎﻣ ﻪ ھﺎی وﺑﯽ اﺳﺖ ﻛ ﻪ ﻋﻼوه ﺑﺮ اراﺋﻪ اﻣﻜﺎﻧﺎت‬ ‫ﻣﻨﺎﺳﺐ در ﻻﻳﻪ راﺑﻂ ﻛﺎرﺑﺮ ) ‪ ، ( UI‬دارای ﺗﻮان ﭘﺎﺳﺨﮕﻮﺋﯽ ﺑﺎﻻﺋﯽ ﻣﯽ ﺑﺎﺷﻨﺪ و ﺑﻪ ﺳﺎدﮔﯽ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ‬ ‫ﺳﺮوﻳﺲ دھﻨﺪه ارﺗﺒﺎط ﺑﺮﻗﺮار ﻧﻤﺎﻳﻨﺪ .‬ ‫ﻣﻔﺎھﯿﻢ ﻓﻨﯽ اوﻟﯿﻪ ‪AJAX‬‬ ‫در ‪ ، AJAX‬ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﻣﯽ ﺗﻮاﻧﻨﺪ ﺳﺮوﻳﺲ ھﺎی وب را ﺑﻄﻮر ﻏﯿﺮھﻤﺰﻣﺎن و از ﻃﺮﻳﻖ اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه و ﺑﺎ اﺳﺘﻔﺎده از ﺷﯽ ‪ XMLHTTPRequest‬ﻓﺮاﺧﻮاﻧﺪه ﺗﺎ اﻃﻼﻋﺎت ﺑ ﻪ ﻋﻨﻮان داده ‪ XML‬ﺑﺴﺘ ﻪ‬ ‫ﺑﻨﺪی و در اداﻣﻪ آﻧﮫﺎ را ﺑﺮ روی ﺷﺒﻜ ﻪ ارﺳﺎ ل ﻧﻤﺎﻳﻨﺪ . ﺑﺪﻳﻦ ﻣﻨﻈﻮر ﺷﯽ ‪ XMLHTTPRequest‬ﻳﻚ ﺷﯽ‬ ‫ﭘﺮاﻛﺴﯽ را اراﺋ ﻪ ﻣﯽ ﻧﻤﺎﻳﺪ ﺗﺎ ﺑﻪ ﻛﻤﻚ آن اﻣﻜﺎن ﻓﺮاﺧﻮاﻧﯽ از راه دور و ﻣﺒﺎدﻟ ﻪ داده ﻓﺮاھﻢ ﮔﺮدد . در ﻓﻦ آوری‬ ‫‪AJAX‬از زﺑﺎن ھﺎی اﺳﻜﺮﭘﯿﺖ ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻧﻈﯿﺮ ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﺑﻄﺮز ﮔﺴﺘﺮده ای اﺳﺘﻔﺎده ﻣﯽ‬ ‫ﮔﺮدد.‬ ‫از ﺟﺎوااﺳﻜﺮﻳﭙﺖ در ﻣﻮاردی ﻧﻈﯿﺮ ﻓﺮاﺧﻮاﻧﯽ از راه دور روﺗﯿﻦ ھﺎ ، اﻧﺠﺎم ﭘﺮدازش ھﺎی ﻣﻮرد ﻧﯿﺎز ﻳﻚ ﺑﺮﻧﺎﻣﻪ در‬ ‫ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه و اﻳﺠﺎد وﻳﮋﮔﯽ ھﺎی ﭘﯿﺸﺮﻓﺘ ﻪ ای در ﺳﻄﺢ ﻻﻳﻪ راﺑﻂ ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد .‬ ‫‪AJAX‬ﻋﻼوه ﺑﺮ ﺟﺎوااﺳﻜﺮﻳﭙﺖ از ﭼﻨﺪﻳﻦ ﻓﻦ آوری دﻳﮕﺮ در ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻧﯿﺰ اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﺪ :‬ ‫: ‪• DOM‬ﺑﻪ ﻛﻤﻚ ﻓﻦ آوری ﻓﻮق ، ﻋﻨﺎﺻﺮ ﻣﻮﺟﻮد در ﻳﻚ ﺻﻔﺤﻪ ‪ HTML‬ﺑﻪ ﻋﻨﻮان ﻣﺠﻤﻮﻋﻪ ای از اﺷﯿﺎء‬ ‫اﺳﺘﺎﻧﺪارد ) ﻧﻈﯿﺮ ‪ document‬و ) ‪ windows‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﯽ ﺷﻮﻧﺪ . ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ، اﻣﻜﺎن دﺳﺘﯿﺎﺑﯽ و اﻧﺠﺎم‬ ‫ﻋﻤﻠﯿﺎت دﻟﺨﻮاه ﺑﺮ روی آﻧﺎن از ﻃﺮﻳﻖ ﻛﺪ ﻓﺮاھﻢ ﻣﯽ ﮔﺮدد .‬ ‫( ‪• DHTML‬ﺑﺮﮔﺮﻓﺘﻪ از : ) ‪ DynamicHTML‬ﻓﻦ آوری ﻓﻮق ، ﺗﻮاﻧﻤﻨﺪی ‪ HTML‬را ﺑﻪ ﻣﻨﻈﻮر واﻛﻨﺶ ﻣﻨﺎﺳﺐ در‬ ‫ﺧﺼﻮص ﻋﻤﻠﯿﺎﺗﯽ ﻛﻪ ﺗﻮﺳﻂ ﻛﺎرﺑﺮان اﻧﺠﺎم ﻣﯽ ﺷﻮد ) ﻧﻈﯿﺮ درج داده ( ﺑﺎ اﺳﺘﻔﺎده از اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه و ﺑﺪون ﻧﯿﺎز ﺑ ﻪ ﻳﻚ ‪ roundtrip‬اﻓﺰاﻳﺶ ﻣﯽ دھﺪ .‬ ‫•رﻓﺘﺎرھﺎ ، ﺷﺎﻣ ﻞ روﺷﯽ ﻣﻨﺎﺳﺐ ﺑﻪ ﻣﻨﻈﻮر ﺑﺮﺧﻮرد ﺳﯿﺴﺘﻤﺎﺗﯿﻚ ﺑﺎ ﻋﻤﻠﯿﺎﺗﯽ ﻧﻈﯿﺮ ‪ drag and drop‬در‬ ‫ﺳﻄﺢ ﻻﻳﻪ راﺑﻂ ﻛﺎرﺑﺮ و ﻣﺮﺗﺒﻂ ﺑﺎ ﻋﻨﺎﺻﺮ ﻣﻮﺟﻮد ﺑﺮ روی ﻳﻚ ﺻﻔﺤﻪ ﻣﯽ ﺑﺎﺷﺪ .‬ ‫•ﻋﻨﺎﺻﺮ : اﺷﯿﺎء ﺳﻔﺎرﺷﯽ ﺷﺪه ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﻣﯽ ﺑﺎﺷﻨﺪ ﻛﻪ ﭘﺘﺎﻧﺴﯿﻞ ھﺎی ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘ ﻪ ای را در ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه اﻳﺠﺎد ﻣﯽ ﻧﻤﺎﻳﻨﺪ .‬ ‫ﭼﺎﻟﺶ ھﺎی ﻓﻦ آوری ‪AJAX‬‬ ‫ﺑﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺻﻔﺤﺎت ﺑ ﻪ ﺳﺒﻚ ‪ AJAX‬دارای ﭼﺎﻟﺶ ھﺎی ﻣﺘﻌﺪدی اﺳﺖ :‬ ‫•ﻋﻨﺎﺻﺮ ﻣﻮﺟﻮد در ﺻﻔﺤﺎت وب ﻣﯽ ﺑﺎﻳﺴﺖ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺷﺮاﻳﻂ ھﺮ ﻣﺮورﮔﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﮔﺮدﻧﺪ ، ﭼﺮاﻛﻪ ھﺮ‬ ‫ﻣﺮورﮔﺮ ﻳﻚ ﻧﺴﺨﻪ ﻣﺘﻔﺎوت از ‪ DOM‬و ‪ DHTML‬را اراﺋﻪ ﻣﯽ ﻧﻤﺎﻳﻨﺪ)ھﺮ ﭼﻨﺪ اﻳﻦ ﺗﻔﺎوت ھﺎ اﻧﺪك ﺑﺎﺷﺪ . )‬ ‫•ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺻﺮﻓﺎ" ﺑﺎ اﺳﺘﻔﺎده از ﺟﺎوااﺳﻜﺮﻳﭙﺖ اﻧﺠﺎم ﻣﯽ ﺷﻮد . ﭘﯿﺎده ﺳﺎزی‬ ‫ﺑﺮﺧﯽ از ﭘﺘﺎﻧﺴﯿﻞ ھﺎی ‪ AJAX‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮای ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺴﯿﺎر ﭘﯿﭽﯿﺪه ﺑﺎﺷﺪ و ﻧﯿﺎزﻣﻨﺪ داﻧﺶ ﺑﺎﻻﺋﯽ در‬ ‫ﺧﺼﻮص اﺳﺘﻔﺎده از ﺟﺎوااﺳﻜﺮﻳﺖ اﺳﺖ .‬ ‫•ﺟﺎوا اﺳﻜﺮﻳﭙﺖ ، وﻳﮋﮔﯽ ھﺎ و اﻣﻜﺎﻧﺎت ﻣﻮرد ﻧﯿﺎز ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺮﻧﺎﻣ ﻪ ھﺎی دات ﻧﺖ را ﺗﺎﻣﯿﻦ ﻧﻤﯽ ﻧﻤﺎﻳﺪ )‬ ‫ﻧﻈﯿﺮ ﻳﻚ روﻳﻜﺮد ﺷﯽ ﮔﺮاء ﻛﺎﻣﻞ ( . ﻋﻼوه ﺑﺮ اﻳﻦ ، در اﻳﻦ ﻓﻦ آوری از ﻛﺘﺎﺑﺨﺎﻧﻪ ای ﻧﻈﯿﺮ آﻧﭽﻪ در ﭘﻠﺖ ﻓﺮم دات‬ ‫ﻧﺖ اراﺋﻪ ﺷﺪه اﺳﺖ ،اﺳﺘﻔﺎده ﻧﻤﯽ ﮔﺮدد و ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﻣﯽ ﺑﺎﻳﺴﺖ ﺗﻤﺎﻣﯽ ﺑﺮﻧﺎﻣﻪ را از اﺑﺘﺪا ﻛﺪ ﻧﻤﺎﻳﻨﺪ .‬ ‫•ﺟﺎوااﺳﻜﺮﻳﭙﺖ و ﭘﯿﺎده ﺳﺎزی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻋﻤﻮﻣﺎ" ﺑﺨﻮﺑﯽ در ‪ IDEs‬ﺣﻤﺎﻳﺖ ﻧﻤﯽ ﮔﺮدﻧﺪ .‬ ‫ﻓﻦ آوری ‪ ، A tlas‬ﻣﺴﺎﺋﻞ اﺷﺎره ﺷﺪه را ﺑﺎ اراﺋﻪ ﻳﻚ ﻓﺮﻳﻤﻮرك ﻛﺎﻣﻞ ﺑﺮای اﻳﺠﺎد ﺑﺮﻧﺎﻣ ﻪ ھﺎی وب ﻣﺒﺘﻨﯽ ﺑﺮ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺑﺮﻃﺮف ﻣﯽ ﻧﻤﺎﻳﺪ.‬ ‫ﻓﻦ آوری ‪، A tlas‬‬ ‫دارا ی ﻋﻨﺎﺻﺮ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه و ﺳﺮوﻳﺲ دھﻨﺪه ای اﺳﺖ‬ ‫ﻛ ﻪ آن را ﺑﻪ ﺧﻮﺑﯽ ﺑﺎ ‪ A SP.NET‬ﻳﻜﭙﺎرﭼ ﻪ و ﻣﺮﺗﺒﻂ ﻣﯽ ﻧﻤﺎﻳ ﺪ‬ ‫ﻣﻔﺎھﯿﻢ ﻓﻨﯽ اوﻟﯿﻪ ﻣﻌﻤﺎری‪Atlas‬‬ ‫در ﺳﺎده ﺗﺮﻳﻦ ﺣﺎﻟﺖ ، ﻳﻚ ﺑﺮﻧﺎﻣﻪ ‪ ، Atlas‬از ﻛﺘﺎﺑﺨﺎﻧ ﻪ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺑﻪ ﻣﻨﻈﻮر ﻣﺪﻳﺮﻳﺖ راﺑﻂ ﻛﺎرﺑﺮ‬ ‫و ﻓﺮاﺧﻮاﻧﯽ ﻋﻨﺎﺻﺮ ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ دھﻨﺪه اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﺪ ‪ ، . Atlas‬ھﻤﭽﻨﯿﻦ ﻋﻨﺎﺻﺮ ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫دھﻨﺪه ای را اراﺋﻪ ﻣﯽ ﻧﻤﺎﻳﺪ ﻛﻪ ﺑﺎ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻣﺮﺗﺒﻂ و ﻣﯽ ﺗﻮاﻧﻨﺪ اﺳﻜﺮﻳﭙﺖ ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه از‬ ‫ﻗﺒﻞ ﺗﻌﺮﻳﻒ ﺷﺪه ای را ﺗﻮﻟﯿﺪ ﻧﻤﺎﻳﻨ ﺪ .‬ ‫ﻋﻨﺎﺻﺮ ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ‪Atlas‬‬ ‫ﻓﻦ آوری ‪ A tlas‬ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﺑﺮﻧﺎﻣ ﻪ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، از ﻣﺠﻤﻮﻋﻪ ای ﻛﺘﺎﺑﺨﺎﻧﻪ ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ) ﻓﺎﻳﻞ ھﺎﺋﯽ ﺑﺎ اﻧﺸﻌﺎب ) . ‪ Js‬اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﺪ ﻛﻪ ﭘﯿﺎﻣﺪ آن ﺗﻌﺮﻳﻒ ﻳﻚ روﻳﻜﺮد ﻻﻳﻪ ای ﺑﺮای‬ ‫اﻳﺠﺎد ﺑﺮﻧﺎﻣ ﻪ ھﺎی ﻣﺒﺘﻨﯽ ﺑﺮ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه اﺳﺖ . اﻳﻦ ﻳ ﻪ ھﺎ ﻋﺒﺎرﺗﻨﺪ از :‬ ‫•ﻻﻳﻪ ﻣﺨﺘﺺ ﻣﺮورﮔﺮھﺎ : ﺑﺎ اﺳﺘﻔﺎده از ﭘﺘﺎﻧﺴﯿ ﻞ ھﺎی اراﺋﻪ ﺷﺪه ﺗﻮﺳﻂ اﻳﻦ ﻻﻳ ﻪ ، اﺳﻜﺮﻳﭙﺖ ھﺎی ‪Atlas‬‬ ‫در اﻛﺜﺮ ﻣﺮورﮔﺮ ﺳﺎزﮔﺎر ﺑﻮده و ﺿﺮورﺗﯽ ﺑﻪ ﻧﻮﺷﺘﻦ اﺳﻜﺮﻳﺖ ھﺎی ﻣﺨﺘﺺ ﻳﻚ ﻣﺮورﮔﺮ وﺟﻮد ﻧﺪارد .‬ ‫•ﺳﺮوﻳﺲ ھﺎی ھﺴﺘﻪ : ‪ a tlas‬ﺷﺎﻣﻞ ﺿﻤﺎﺋﻤﯽ ﺑﻪ ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﻧﻈﯿﺮ ﻛﻼس ھﺎ ، ‪، namespace‬‬ ‫‪ ،eventhandler‬ﺗﻮارث ، ﻧﻮع ھﺎی داده و ﺗﺴﻠﺴﻞ اﺷﯿﺎء اﺳﺖ . وﻳﮋ ﮔﯽ ھﺎی ﻓﻮق ﻳﻚ ﻣﺪل ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ‬ ‫ﺷﯽ ﮔﺮاء را در اﺧﺘﯿﺎر ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﻗﺮار ﻣﯽ دھﺪ ﺗﺎ ﺑﻪ ﻛﻤﻚ ﺑﺘﻮان ﻋﻼوه ﺑﺮ ﺳﺮﻋﺖ در اﻳﺠﺎد ﺑﺮﻧﺎﻣ ﻪ ھﺎ از ﻛﺪ‬ ‫ﺗﻮﻟﯿﺪ ﺷﺪه ﻧﯿﺰ ﺑﺪﻓﻌﺎت اﺳﺘﻔﺎده ﻧﻤﻮد .‬ ‫• ﻛﺘﺎﺑﺨﺎﻧﻪ ﻛﻼس ﭘﺎﻳﻪ : ‪ Atlas‬ﺷﺎﻣ ﻞ ﻋﻨﺎﺻﺮی ﻧﻈﯿﺮ دﻳﺒﺎﮔﺮھﺎ ، ‪ ، Timers‬ردﻳﺎﺑﯽ و ‪ string buliders‬اﺳﺖ .‬ ‫•ﻻﻳﻪ ﺷﺒﻜﻪ : اﻳﻦ ﻻﻳﻪ ﺑﺎ ﺳﺮوﻳﺲ ھﺎی ﻣﺒﺘﻨﯽ ﺑﺮ وب و ﺑﺮﻧﺎﻣﻪ ھﺎ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﯽ ﻧﻤﺎﻳﺪ و ﻣﺪﻳﺮﻳﺖ‬ ‫ﻓﺮاﺧﻮاﻧﯽ ﻣﺘﺪھﺎ از راه دور و ﻏﯿﺮھﻤﺰﻣﺎن را ﺑﺮﻋﮫﺪه ﻣﯽ ﮔﯿﺮد . ﻻﻳﻪ ﻓﻮق ، ﻣﺪﻳﺮﻳﺖ ﻓﺮاﺧﻮاﻧﯽ ﻏﯿﺮھﻤﺰﻣﺎن‬ ‫ﺑﺮروی ‪ XMLHTTP‬را ﺑﺮﻋﮫﺪه ﮔﺮﻓﺘﻪ و ﺑﺎﻋﺚ ﻣﯽ ﮔﺮدد ﻛ ﻪ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﺑﺪون اﻳﻦ ﻛﻪ درﮔﯿﺮ ﭘﯿﭽﯿﺪﮔﯽ ھﺎی‬ ‫ﻣﻮﺟﻮد ﺷﻮﻧﺪ ﺑﺎ ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺧﻂ ﻛﺪ ، ﻣﺘﺪھﺎی ﻣﻮرد ﻧﻈﺮ را ﻓﺮاﺧﻮاﻧﻨﺪ .‬ ‫•ﻻﻳﻪ : ‪ UI‬در اﻳﻦ ﻻﻳﻪ ﻗﺎﺑﻠﯿﺖ ھﺎی ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ‪ Atlas‬ﻧﻈﯿﺮ رﻓﺘﺎرھﺎ ، ﮔﺮاﻣﺮ ﺗﻌﺮﻳﻔﯽ ‪ ، Atlas‬ﻋﻨﺎﺻﺮ ‪ UI‬و‬ ‫ﻧﺴﺒﺖ دھﯽ داده اراﺋﻪ ﻣﯽ ﮔﺮدد .‬ ‫•ﻻﻳﻪ ﻛﻨﺘﺮل ھﺎ : اﻳﻦ ﻻﻳﻪ ﻛﻨﺘﺮل ھﺎی ﻣﺨﺘﺺ ‪ a tlas‬را ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه اﻳﺠﺎد ﻣﯽ‬ ‫ﻧﻤﺎﻳﺪ . ﻋﻼوه ﺑﺮ اﻳﻦ ﻛﻪ ﻣﯽ ﺗﻮان از ﻃﺮﻳﻖ اﺳﻜﺮﻳﭙﺖ ﺑﻪ اﻳﻦ ﻛﻨﺘﺮل ھﺎ دﺳﺘﯿﺎﺑﯽ داﺷﺖ ، اﻣﻜﺎن اﻧﺠﺎم ﻋﻤﻠﯿﺎت‬ ‫ﻣﺘﻔﺎوﺗﯽ ﻧﻈﯿﺮ ﻧﺴﺒﺖ دھﯽ داده ﻧﯿﺰ وﺟﻮد دارد. ﻛﻨﺘﺮل ھﺎی ‪ Navigation‬و ‪ data-bound listview‬ﻧﻤﻮﻧﻪ ھﺎﺋﯽ‬ ‫در اﻳﻦ زﻣﯿﻨ ﻪ ﻣﯽ ﺑﺎﺷﻨﺪ .‬ ‫•ﻳﻚ ﻣﺪل ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺗﻌﺮﻳﻔﯽ ﻛﻪ ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن را ﻗﺎدر ﻣﯽ ﺳﺎزد ﻋﻨﺎﺻﺮ ‪ atlas‬را ﺑﺎ روﺷﯽ ﻣﺸﺎﺑﻪ‬ ‫ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه ‪ ASP.NET‬اﻳﺠﺎد ﻧﻤﺎﻳﻨﺪ .‬ ‫ﻓﻦ آوری ‪ A tlas‬را ﻣﯽ ﺗﻮان ﺑﻪ ﻋﻨﻮان ﻛﺘﺎﺑﺨﺎﻧﻪ ھﺎی اﺳﻜﺮﻳﭙﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺗﺼﻮر ﻧﻤﻮد ﻛ ﻪ زﻳﺮﻣﺠﻤﻮﻋﻪ ای‬ ‫از ﻣﻌﻤﺎری ‪ ASP.NET‬ﺑﺮ روی ﺳﺮوﻳﺲ دھﻨﺪه ﻣﯽ ﺑﺎﺷﻨﺪ‬ ‫ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﺑﺮﻧﺎﻣﻪ ھﺎی وب ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻓﻦ آوری ‪ Atlas‬وﻳﮋﮔﯽ ھﺎی ﻣﺘﻌﺪدی را اراﺋ ﻪ ﯽ‬ ‫ﻧﻤﺎﻳﺪ . اراﺋﻪ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ‪ API‬ﺑﺮای ﭘﯿﺎده ﺳﺎزی در ﺟﺎوااﺳﻜﺮﻳﭙﺖ ، ﻗﺎﺑﻠﯿﺖ ﺳﺎزﮔﺎری اﺗﻮﻣﺎﺗﯿﻚ ﺑﺎ ﻣﺮورﮔﺮھﺎ و‬ ‫ﻳﻚ ﻣﺪل ﺗﻌﺮﻳﻔﯽ ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ، ﻧﻤﻮﻧﻪ ھﺎﺋﯽ در اﻳﻦ زﻣﯿﻨﻪ ﻣﯽ ﺑﺎﺷﻨﺪ .‬ ‫ﻋﻨﺎﺻﺮ ﺳﻤﺖ ﺳﺮوﻳﺲ دھﻨﺪه ‪Atlas‬‬ ‫ﻓﻦ آوری ‪ ، A tlas‬ﺻﺮﻓﺎ" در ارﺗﺒﺎط ﺑﺎ اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻧﻤﯽ ﺑﺎﺷﺪ و از ﻋﻨﺎﺻﺮ ﺳﻤﺖ‬ ‫ﺳﺮوﻳﺲ دھﻨﺪه ، ﺳﺮوﻳﺲ ھﺎ و ﻛﻨﺘﺮل ھﺎﺋﯽ اﺳﺘﻔﺎده ﻣﯽ ﻧﻤﺎﻳﺪ ﻛﻪ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ اﺳﻜﺮﻳﭙﺖ ھﺎی ‪Atlas‬‬ ‫ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﻣﺮﺗﺒﻂ ﮔﺮدﻧﺪ :‬ ‫•ﺳﺮوﻳﺲ ھﺎی وب ﻛ ﻪ وﻳﮋ ﮔﯽ ھﺎی ‪ ASP.NET‬ﻧﻈﯿﺮ ﺳﺮوﻳﺲ ھﺎی ﭘﺮوﻓﺎﻳﻞ ، ‪، roles ، membership‬‬ ‫‪personalization‬و ‪ globalization‬را اراﺋﻪ ﻣﯽ ﻧﻤﺎﻳﻨﺪ .‬ ‫•ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه ‪ Atlas‬ﻛ ﻪ ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه ‪ A SP.NET‬را ‪ reasemble‬ﻣﯽ ﻧﻤﺎﻳﻨﺪ‬ ‫وﻟﯽ اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ‪ Atlas‬را ﻣﻨﺘﺸﺮ ﻣﯽ ﻧﻤﺎﻳﻨﺪ . اﻳﻦ ﻧﻮع ﻛﻨﺘﺮ ل ھﺎ ارﺗﺒﺎط ﺑﺴﯿﺎر‬ ‫ﻧﺰدﻳﻜﯽ ﺑﺎ ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه ‪ ASP.NET‬ﻧﻈﯿﺮ دﻛﻤ ﻪ ھﺎ ، ‪ Label‬و ... دارﻧﺪ .‬ ‫•ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه ‪ Atlas‬ﻛﻪ ﺑﺎﻋﺚ ﻣﯽ ﮔﺮدﻧﺪ ﺟﺎوااﺳﻜﺮﻳﭙﺖ رﻓﺘﺎرھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه‬ ‫را ﺗﻮﻟﯿﺪ ﻧﻤﺎﻳﺪ . ﻛﻨﺘﺮ ل ھﺎی ‪ Popup ، ClickBehavior ، HoverBehavior‬و‪Auto‬‬ ‫ھﺎﺋﯽ در اﻳﻦ زﻣﯿﻨ ﻪ ﻣﯽ ﺑﺎﺷﻨﺪ .‬ ‫ﺗﻤﺎﻣﯽ ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪ ‪ atlas‬در وﻳﮋوال اﺳﺘﻮدﻳﻮ ﻧﯿﺮ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻣﯽ ﺑﺎﺷﻨﺪ. ﺑﻨﺎﺑﺮاﻳﻦ‬ ‫ﻣﯽ ﺗﻮان از آﻧﺎن در زﻣﺎن ﻃﺮاﺣﯽ اﺳﺘﻔﺎده ﻧﻤﻮد ) ھﻤﺎﻧﻨﺪ ﻛﻨﺘﺮل ھﺎی ﺳﺮوﻳﺲ دھﻨﺪه . ) ‪ASP.NET‬‬ ‫‪leteBehavior‬ﻧﻤﻮﻧ ﻪ‬ ‫ﻓﻦ آوری‪ ، Atlas‬اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﯽ ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه را ﺑﺎ ﭘﯿﺎده ﺳﺎزی ﺳﻤﺖ ﺳﺮوﻳﺲ دھﻨﺪه‬ ‫‪ASP.NET‬ﻳﻜﭙﺎرﭼﻪ ﻣﯽ ﻧﻤﺎﻳﺪ و ﭘﯿﺎده ﻛﻨﻨﺪﮔﺎن ﻣﯽ ﺗﻮاﻧﻨﺪ از ﭘﺘﺎﻧﺴﯿﻞ ھﺎی ‪ ASP.NET‬در ﺳﻤﺖ ﺳﺮوﻳﺲ‬ ‫دھﻨﺪه ﺑﺮای ﺑﺮﻧﺎﻣﻪ ھﺎی ‪ A tlas‬ﻧﯿﺰ اﺳﺘﻔﺎده ﻧﻤﺎﻳﻨﺪ .‬ ‫ھﺪف اوﻟﯿﻪ ﻓﻦ آوری ‪، Atlas‬‬ ‫ﺗﺮﻛﯿﺐ وﻳﮋﮔﯽ اﺳﻜﺮﻳﭙﺖ ھﺎی ﺳﻤﺖ ﺳﺮوﻳﺲ ﮔﯿﺮﻧﺪه ﺑﺎ وﻳﮋ ﮔﯽ ھﺎﺋﯽ از ‪ ASP.NET‬ﺑﺮ روی ﺳﺮوﻳﺲ دھﻨﺪه‬ ‫اﺳﺖ ﺗﺎ ﺑﻪ ﻛﻤﻚ آن‬ ‫ﻳﻚ ﭘﻠﺖ ﻓﺮم ﭘﯿﺎده ﺳﺎزی ﺟﺎﻣﻊ و ﻓﺮاﮔﯿﺮ اﻳﺠﺎد ﮔﺮدد.‬ ‫ﺗﮭﯿﮫ ﺷﺪه در ﺷﺮﮐﺖ ﺳﺨﺎروش‬ ‫اﺑﺰارھﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪AJAX‬‬ ‫و اﺑﺰارھﺎي ﺑﺮﻧﺎﻣﻪ ‪ Ajax‬ﭘﯿﺎدهﺳﺎزيھﺎي ﻣﺨﺘﻠﻒ اﻳﻦ راھﻨﻤﺎ ﺣﺎوي ﻟﯿﻨﮏھﺎي ﺳﻮدﻣﻨﺪي درﺑﺎره‬ ‫.ﻣﺮﺗﺒﻂ ﺑﺎ آن اﺳﺖ ﻧﻮﻳﺴﻲ‬ ‫:ﺷﺮح‬ ‫و اﺑﺰارھﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪ Ajax‬ﭘﯿﺎدهﺳﺎزيھﺎي ﻣﺨﺘﻠﻒ در اﻳﻦ ﺻﻔﺤﻪ ﻣﻲﺗﻮاﻧﯿﺪ ﻟﯿﻨﮏھﺎي ﺳﻮدﻣﻨﺪي درﺑﺎره‬ ‫را ﻣﻄﺎﻟﻌ ﻪ >‪ Ajax‬ﭘﺪﻳﺪه اﻧﻘﻼﺑﻲ< ﻣﻲﺗﻮاﻧﯿﺪ ﻳﺎدداﺷﺖ ‪ Ajax‬ﻣﺮﺗﺒﻂ ﺑﺎ آن ﭘﯿﺪا ﮐﻨﯿﺪ. ﺑﺮاي آﺷﻨﺎﻳﻲ اوﻟﯿ ﻪ ﺑﺎ‬ ‫.آﻣﺪه اﺳﺖ >‪ A jax‬ھﻤﻪ ﭼﯿﺰ درﺑﺎره< ﮐﻨﯿﺪ. ﺷﺮح ﮐﺎﻣﻞ اﻳﻦ ﺗﮑﻨﯿﮏ در ﻣﻘﺎﻟﻪ‬ ‫ﮐﺘﺎﺑﺨﺎﻧﻪھﺎي ﺟﺎوا اﺳﮑﺮﻳﭙﺖ‬ ‫دارد ‪ Google Suggest‬اﺳﮑﺮﻳﭙﺘﻲ ﮐ ﻪ ﮐﺎرﮐﺮدي ﻣﺸﺎﺑﻪ ﺳﯿﺴﺘﻢ ﮐﻼسھﺎي ﺟﺎوا - ‪Suggest Framework‬‬ ‫ﺗﮑﻨﯿﮏھﺎي ﻣﺨﺘﻠﻒ دﺳﺘﺮﺳﻲ ﺑﻪ دﻳﺘﺎ ﺑﻪ ﮐﻤﮏ ﺟﺎوا و ﺟﺎوا اﺳﮑﺮﻳﭙﺖ. ﺣﺎوي ﻳﮏ - ‪ AJAX‬ﻣﺜﺎﻟﮫﺎي‬ ‫‪ AJAX‬درﺑﺎره ﻣﺸﮑﻼت ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﺎ ‪PowerPoint‬‬ ‫ﺑﺮ روي ﮐﺎرﮐﺮد ﻳﮏ ﺑﺮاي ﺷﺒﯿ ﻪ ﺳﺎزي ﺗﺎﺛﯿﺮ ﮐﻨﺪي و ﻗﻄﻊ ﺷﺪن ارﺗﺒﺎط ﺷﺒﮑﻪ ‪ HTTP Proxy‬ﻳﮏ - ‪AJAX Proxy‬‬ ‫ﺑﺮﻧﺎﻣﻪ ايﺟﮑﺲ‬ ‫را ﻣﻲ ﮔﯿﺮد و ﺑﻪ ھﺮ ﺗﺎﺑﻊ ﺟﺎوا اﺳﮑﺮﻳﭙﺘﻲ ﻣﻮرد ﻧﻈﺮ ‪ HTML‬اﻃﻼﻋﺎت ﻳﮏ ﻓﺮم ﻣﻨﺎﺳﺐ ﮐﻪ ‪ Toolkit‬ﻳﮏ - ‪AJForm‬‬ ‫ﻣﻲ ﮐﻨﺪ ارﺳﺎل‬ ‫را آﺳﺎن ﻣﻲﮐﻨﺪ ‪ Perl‬ﺑﺎ ‪ AJAX‬ﺑﺮﻧﺎﻣﻪھﺎي ﮐﺎر ﻧﻮﺷﺘﻦ ‪ Toolkit‬اﻳﻦ - ‪CGI::Ajax‬‬ ‫ﭘﺸﺘﯿﺒﺎﻧﻲ ﻧﯿﺰ ‪ AJAX‬ﮐﻪ از )‪ (OOP‬اﺳﮑﺮﻳﭙﺘﻲ اﭘﻦ ﺳﻮرس و ﺷﻲء ﮔﺮا ﻳﮏ ﻓﺮﻳﻢ ورک ﺟﺎوا - ‪P rototype‬‬ ‫ﻣﻲ ﮐﻨﺪ‬ ‫‪ AJAX‬ﺟﺎﻟﺐ ﺑﺎ ﭘﺸﺘﺒﺎﻧﻲ ﮐﺎﻣﻞ از ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧ ﻪ ﺟﺎوا اﺳﮑﺮﻳﭙﺘﻲ - ‪Rico‬‬ ‫ﺳﺎده ‪ Toolkit‬ﻳﮏ - ‪Sajax‬‬ ‫‪ Prototype‬اﺳﮑﺮﻳﭙﺘﻲ ﻣﺮﺗﺒﻂ ﺑﺎ ﻓﺮﻳﻢ ورک ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺟﺎوا - ‪Script.aculo.us‬‬ ‫واﺑﺴﺘ ﻪ و ﻋﻨﺎﺻﺮ ‪ XMLHttpRequest‬ﺑﺪون ‪ - AJAX‬آﻟﺘﺮﻧﺎﺗﯿﻮھﺎي ايﺟﮑﺲ - ‪Alternative AJAX techniques‬‬ ‫‪ XMLHttpRequest‬ﻣﺪﻳﺮﻳﺖ ﺷﻲء - ‪XHRConnection‬‬ ‫‪ASP.NET‬‬ ‫0.2 ‪ ASP.NET‬در ‪ AJAX‬ﭘﯿﺎده ﺳﺎزي ﮐﺎﻣﻞ - ‪A tlas‬‬ ‫ﻧﯿﺰ ھﺴﺖ روي ﭘﻼﺗﻔﺮم دات ﻧﺖ ﮐ ﻪ راﻳﮕﺎن ‪ AJAX‬اوﻟﯿﻦ ﭘﯿﺎده ﺳﺎزي - ‪Ajax.NET Professional‬‬ ‫ھﺎي ﻣﻨﺎﺳﺐ ﺑﺮاي ‪ Web Control‬ﺷﺎﻣﻞ ‪ AJAX‬ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ دات ﻧﺘﻲ راﻳﮕﺎن ﺑﺮاي - ‪BorgWorX Ajax .NET‬‬ ‫‪ASP.NET‬‬ ‫‪ ASP.NET‬ﮐﻨﺘﺮلھﺎي ايﺟﮑﺲ ﺑﺮاي اﺳﺘﻔﺎده در وﻳﮋوا ل اﺳﺘﻮدﻳﻮ و - ‪PowerWEB LiveControls for ASP.NET‬‬ ‫روي وب ﺳﺮوﻳﺲ ﻣﺘﻤﺮﮐﺰ ﺷﺪه اﺳﺖ ﮐﻪ ‪ ASP.NET‬ﻳﮏ ﻣﻮﺗﻮر ايﺟﮑﺲ راﻳﮕﺎن ﺑﺮاي - ‪Aspects of Ajax‬‬ ‫‪ xmlhttp‬روي ‪ ASP.NET‬ﻓﺮمھﺎي در ‪ Post Back‬ارﺳﺎل - ‪OutPost‬‬ ‫‪ ASP.NET‬ﺑﺮاي ﻏﻨﻲﺗﺮ ﮐﺮدن ﺳﺎﺧﺘﺎر ﺻﻔﺤﺎت ‪ AJAX‬ﺑﺮ ﻳﮏ ﻓﺮﻳﻢ ورک ﻣﺒﺘﻨﻲ - ‪ComfortASP.NET‬‬ ‫ﮐﺎرﺑﺮد آﺳﺎن ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ايﺟﮑﺴﻲ ﺑﺎ - ‪MonoRail‬‬ ‫‪ ASP.NET‬در ﻣﺤﯿﻂ ‪ AJAX‬ﮐﻼﻳﻨﺖ/ﺳﺮوري ﺑﺮاي ﭘﯿﺎده ﺳﺎزي رھﯿﺎﻓﺖ ﺗﺮﮐﯿﺒﻲ - ‪Bitkraft‬‬ ‫‪PHP‬‬ ‫‪ PHP‬در ‪ AJAX‬ﺑﺮاي ﭘﺎده ﺳﺎزي ‪ Toolkit‬ﻳﮏ - ‪XAJAX‬‬ ‫از ﻃﺮﻳﻖ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ ﺳﻤﺖ ﮐﻼﻳﻨﺖ ‪ PHP‬در ‪ Server-side‬ﮐﻼسھﺎي ﮐﺘﺎﺑﺨﺎﻧﻪاي ﺑﺮاي ﻓﺮاﺧﻮاﻧﺪ ن - ‪NAJAX‬‬ ‫‪ AJAX‬ﺳﺎده ﺑﺮاي ‪ Toolkit‬ﻳﮏ - ‪SAJAX‬‬ ‫‪ AJAX‬ﺑﺮاي ﭘﯿﺎده ﺳﺎزي‪ Toolkit‬ﻳﮏ - ‪PAJAX‬‬ ‫‪ PHP‬ﭘﯿﺎده ﺳﺎزي ايﺟﮑﺲ در - ‪HTML_Ajax‬‬ ‫‪Java‬‬ ‫ﮐ ﻪ از ﻣﺪل ﺳﻪ ﻻﻳﻪي ‪ J2EE‬و ‪ AJAX‬ﻧﻮﻳﺴﻲ ﺳﺮﻳﻊ( ﺑﺮاي ﺑﺮﻧﺎﻣﻪ( ‪ RAD‬ﻳﮏ ﻣﺤﯿﻂ - ‪ThinkCAP JX‬‬ ‫ﺑﺮاي ﮐﺎﺳﺘﻦ از ﻣﯿﺰان ﮐﺪﻧﻮﻳﺴﻲ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ اﺳﺘﻔﺎده ﻣﻲﮐﻨﺪ ‪client/server event model‬‬ ‫ﺑﺮاي ﺟﺎوا ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ايﺟﮑﺴﻲ راﻳﮕﺎن - 2‪Echo‬‬ ‫ﻧﻮﺷﺘﻪ ﺷﺪه ‪ JSP‬ﺑﺮاي ارﺗﻘﺎء ﻧﺮماﻓﺰارھﺎي ﮐﻨﻮﻧﻲ ﺗﺤﺖ وب ﮐ ﻪ ﺑﺎ ﻳﮏ ﭘﺮوژه اﭘﻦ ﺳﻮرس - ‪AjaxAnywhere‬‬ ‫ﺑﺎﺷﻨﺪ‬ ‫ﮐ ﻪ ﮐﺎر ﺑﺎ ايﺟﮑﺲ در اﻳﻦ ﭘﻼﺗﻔﺮم را آﺳﺎن ﻣﻲﮐﻨﺪ ‪ JSP‬ھﺎي راﻳﮕﺎن‪ Tag‬ﻳﮏ ﺳﺮي - ‪A jaxTags‬‬ ‫اﻣﮑﺎن ‪ HTML‬را ﺑﺪون ﻧﯿﺎز ﺑﻪ ﻧﻮﺷﺘﻦ ﺟﺎوا اﺳﮑﺮﻳﭙﺖ در ‪ AJAX‬ﺗﮑﻨﯿ ﮏ ﻳﮏ ﻓﺮﻳﻢ ورک ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﮐﻪ - ‪Guise‬‬ ‫ﭘﺬﻳﺮ ﻣﻲﮐﻨﺪ‬ ‫ﺟﺎوا ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ﻣﺠﺎﻧﻲ ﺑﺮاي - ‪DWR‬‬ ‫ﺳﻤﺖ ﮐﻼﻳﻨﺖ و ﺳﻤﺖ )‪ (synchronize‬ﺑﺮاي ھﻤﺎھﻨﮓ ﮐﺮدن ‪ AJAX‬ﻳﮏ ﻓﺮﻳﻢ ورک اﭘﻦ ﺳﻮرس ﮐ ﻪ از - ‪jWic‬‬ ‫ﺳﺮور اﺳﺘﻔﺎده ﻣﻲﮐﻨﺪ‬ ‫ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣ ﻪھﺎي ايﺟﮑﺴﻲ ﺑﺮاي ‪ JSF‬ﻳﮏ ﻓﺮﻳﻢ ورک - ‪ICEfaces‬‬ ‫ﭘﻼﺗﻔﺮم ﻣﺎﻟﺘﻲ‬ ‫‪ ASP‬و ‪ PHP‬ﻧﻮﻳﺴﻲ ﺑﺮاي ﭘﯿﺎده ﺳﺎزي ايﺟﮑﺲ در ﻳﮏ ﮐﺘﺎﺑﺨﺎﻧﻪ ﮐﺎﻣ ﻞ ﺑﺮﻧﺎﻣ ﻪ - ‪CPAINT‬‬ ‫‪ ASP.NET‬ﺑﺎ اﺳﺘﻔﺎده از ﺟﺎوا ﻳﺎ ﺗﻮﻟﯿﺪ ﺑﺮﻧﺎﻣﻪھﺎي ايﺟﮑﺴﻲ - ‪GeneXus‬‬ ‫‪ AJAX‬ﺑﺮاي ﺑﺮاي ﺑﺮﻧﺎﻣﻪھﺎ ي ﻣﺒﺘﻨﻲ ﺑﺮ ﭘﻼﺗﻔﺮم ﺟﺎواﻳﻲ و دات ﻧﺘﻲ - ‪WebORB‬‬ ‫‪ Enterprise‬ايﺟﮑﺲ ﺑﺮاي ﻣﺤﯿﻄﮫﺎي - ‪JackBe‬‬ ‫ﻣﺮﺟﻊ اﺟﮑﺲ‬ .1 Ebook : Professional AJAX …............................................... …............................................... …................... .2 http://www.codeproject.com/books/AJAXFutureWeb.asp .3 http://www.ajaxpro.info/Examples/DataType/default.aspx ...
View Full Document

This note was uploaded on 10/15/2011 for the course COMPUTER 40443 taught by Professor Safari during the Spring '10 term at Sharif University of Technology.

Ask a homework question - tutors are online