[Daqq tal-mużika] Doug LLOYD: Allura wieħed aktar tip ta 'idea li tip ta 'jaqa' taħt l-umbrella ta ' JavaScript huwa xi ħaġa imsejħa Ajax. Sa dan il-punt, tagħna interazzjoni ma JavaScript kienet limitata biex timbotta għal buttuna u xi ħaġa jiġri. U speċifikament, il- xi ħaġa li jiġri huwa websajts tagħna tidher u tinħass bidliet. Dritt? Bħal b'mod partikolari, fil- mudell tad-dokument oġġett vidjo, I biddel il-kulur fl-isfond. Imma meta I did li, I ma kellhomx tagħmel kull talba żejda speċjali. I ma kellhomx li jitlob li l-server tibgħatli paġna ġdida. I biss biddel dak I diġà kellha. I ma kellhomx biex jerġgħu jitgħabbew paġna tiegħi, u affarijiet definittivament mibdula, hekk li l-kbir. Iżda hemm definittivament xi interazzjoni utent manwali involuti. Ajax hija teknika jibred li tippermetti ahna taġġorna l-kontenut tal-paġna, u mhux biss il-ħarsa u tħoss, mingħajr tagħbija mill-ġdid. U sabiex b'mod speċifiku meta I jgħidu aġġornament kontenut tal-paġna, Jien ma tgħid aħna jikteb il-paġna tuża JavaScript. Jien qal għandna attwalment jitolbu aktar informazzjoni mill-server mingħajr page tagħna jkollhom biex jerġgħu jitgħabbew. Issa dik it-tip ta 'daqsxejn ta' teknika aktar avvanzati li aħna qed tmur biex jitkellmu dwar f'dan il-video. Aħna ser ikollhom xi interazzjoni. Imma meta nagħmlu, jien ser tkun jagħmlu talbiet lill-web server. F'dan il-każ, biss x'hemm tmexxija web server Apache tiegħi. Jien ser tkun qed tagħmel addizzjonali talbiet filwaqt li jien jżuru web page, iżda page tiegħi mhux se jġedded. Huwa biss se asynchronously aġġornament paġna tiegħi. U li, fil-fatt, li Ajax stands għal, huwa Asynchronous JavaScript u XML. XML huwa tip ieħor ta 'awment lingwa, u inti tista sort ta jaħsbu li biss bħal HTML. Mhuwiex pjuttost l-istess ħaġa, iżda huwa bażikament biss lingwa markup. Allura huwa ta 'mhux sinkroniku JavaScript u lingwa markup. Allura sabiex jużaw dan Ajax technique-- Ajax ma tkunx lingwa ta 'programmar separat. Huwa biss tip ta ' sett ta 'techniques-- aħna bżonn li tinħoloq speċjali JavaScript oġġett, li jissejjaħ XMLHttpRequest. Issa, huwa faċli ħafna li tagħmel dan. Aħna biss jgħidu var, ikun x'ikun irridu li jsejħu dan l-oġġett, ugwali XMLHttpRequest ġdid. U issa għandna issa kisbu l sort Ajax ta oġġett, jew XMLHttpRequest oġġett, li se jippermetti ahna asynchronously taġġorna paġna tagħna. Wara li għandna gotten dan il-ġdid oġġett, dan XMLHttpRequest, għandna nagħmlu xi ħaġa biex tagħha imġieba onreadystatechange. Onreadystatechange imġieba hija verament ftit meta inti tagħmel talba għal paġna web, il-paġna tgħaddi minn numru ta 'passi. L-ewwel, talba ma ġietx mibgħuta. Imbagħad, it-talba ġiet mibgħuta, iżda mhux sodisfatta. Imbagħad it-talba ikun aġixxa fuqu. Imbagħad it-talba hija qed tintbagħat lura lilek. Imbagħad, it-talba hija mgħobbija b'mod sħiħ fil-paġna tiegħek. Dawk huma stati differenti. U għalhekk għandna bżonn li jiġu stabbiliti tagħna oġġett XMLHttpRequest ġdida li jibdlu meta l-bidliet istat lest. U tipikament, nagħmlu dan billi tiddefinixxi funzjoni anonima, li aħna qed familjari mal mit JavaScript issa, li huwa msejjaħ meta l-bidliet istat lest. Huwa verament mhux wisq aktar minn dak. Aħna biss se tkun definizzjoni ta ' funzjoni anonima, tip ta 'bħal dak aħna kienu qed jagħmlu fil JavaScript, fejn nixtiequ għandhom funzjoni anonima jirrispondu għal verifika fuq il click, jew meta aħna kienu qed jagħmlu mappa tal id-diversi oġġetti fil-firxa. Xi ħaġa ġara meta xi ħaġa kienet għafast. F'dan il-każ, huwa biss xi ħaġa jiġri meta l-istat tal-paġna tagħna bidliet. Hemm żewġ proprjetajiet oħra li huma tip of-- dawn mhux qed l-uniċi proprjetajiet li huma inerenti għall XMLHttpRequest, iżda dawn qed dawk pretty importanti. Hemm xi ħaġa imsejħa readyState, li kif inti tista 'probabbilment raden, huwa relatat ma 'onreadystatechange. Hija fil-fatt jgħidlek dak l-readyState hu. 0, 1, 2, 3, u 4 huma il-possibbiltajiet hemmhekk, u dawn it-tip ta 'bejn wieħed u ieħor jikkorrispondu għal dak I kien biss jitkellem dwar it-tieni ilu. U allura l-istatus, li nisperaw jekk kollox mexa OK, huwa ta '200, li huwa qasir għal, naturalment, OK, li aħna qed familjari mal mit Http. Allura aħna qed jittamaw li l-istat lest tagħna huwa erba, u l-istatus tagħna huwa ta '200. U jekk l-istat lest tagħna huwa erba, u r-rispons hija lesta li jitqiegħdu fis- paġna, u l-istatus huwa ta '200, konna kapaċi jagħmlu kollox b'suċċess, issa nistgħu asynchronously jaġġornaw il-paġna tagħna mingħajr ma jkollhom biex jerġgħu jitgħabbew il-kontenut kollu ta 'dan. Wara konna definit x'jiġri l-imġieba onreadystatechange, u konna ivverifikat li readyState huwa ta '4 u l-istatus huwa ta' 200, allura kollha għandna bżonn tagħmel hu li jiftħu mhux sinkroniku talba, li huwa biss tagħmel l Http ġeneralment IKOLLOK talba. Just tagħmel dan programmatically, minflok permezz tal-web browser tagħna. U allura aħna jibgħat dik it-talba. Allura dak li ma dan forsi look like fil-kuntest? Allura hawnhekk funzjoni li jittratta talbiet Ajax. KOLLOX SEW? U stajt qal arbitrarju hija taċċetta l-argument. U dan tip ta ' iskeletru ġenerali hawn. Fil-bidu nett, irridu jiksbu lilna nfusna oġġett XMLHttpRequest ġdid. Imbagħad, I bżonn li jiġu stabbiliti l- imġieba onreadystatechange. U hekk jien se ngħid meta l-bidliet readyState, Nixtieq li jsejħu din il-funzjoni. Li se titlob lill- kwistjoni, jekk il readyState huwa ta '4, jekk il-readyState inbidlet li jkun 4, u l-istatus kien 200, hekk kellna talba ta 'suċċess, I trid tagħmel xi ħaġa għall-paġna. U aħna ser tagħti ħarsa lejn eżempju ta 'dak li li xi ħaġa tista 'tkun fit-tieni. Allura mbagħad, issa għandi definiti funzjoni anonima tiegħi, funzjoni tar-rispons tiegħi kull meta il-bidliet readyState. Mela allura I biss ħtieġa li tiftaħ jitlob, bil-metodu Miftuħ. U mbagħad, I jibgħat dik it-talba. U ejja tagħti ħarsa lejn eżempju aktar konkreta ta 'dak Ajax tista' tagħmel fuq il-paġni web tagħna. So I hawn sempliċi ħafna paġna imsejħa home.html. U stajt ltqajna informazzjoni tmur hawn u xi tip ta drop-down menu. U aħna ser tirrevedi dan f'sekonda. Imma I think we issa għandhom jieħdu tħares lejn il-kodiċi tas-sors attwali. U hekk, jien ser jiftħu home.html. U aħna ser tara x'inhu għaddej. Allura fil-quċċata ħafna hawn, għandi xi għalf JavaScript li għaddej. U hawn, I apparentement jkollhom a div li ID huwa infodiv, u xi informazzjoni se jmorru hemm. U mbagħad I jkollhom din il-forma. U ġewwa ta 'dan forma, I ikollhom xi ħaġa imsejħa Agħżel, li huwa biss menu drop-down bil-mazz ta 'għażliet differenti. U apparentement meta li l-bidliet, meta l-għażla li ġiet magħżula għandha mibdula, jien ser sejħa xi funzjoni cs50Info, u mbagħad jien ser jgħaddu this.value, fejn dan jirreferi għal liema għażla ġiet magħżula, u valur huwa waħda minn dawn hawn, l-għażla valur = ugwali vojta, "Blumberg," "Bowden," "Tibd," u "Malan." Allura dak li jista 'attwalment jiġri hawn meta I do dan? Well, ejja tagħti tħares lejn blumberg.html. Id-Dehra huwa biss snippet ta 'xi Html. U fil-fatt, dak li jien bit-tama jiġri hawn huwa jien ser tkun tista 'timla dan Html direttament fil-paġna web tiegħi mingħajr ma jkollhom biex jerġgħu jitgħabbew il-paġna, b'tali mod li meta I jagħżlu Hannah mill-drop-down menu, informazzjoni dwar Hannah, b'mod partikolari, din l-informazzjoni hawn fil blumberg.html, huwa dak li juri fuq il-paġna. U jien ma jkollhom jġedded. U jekk I għażlet xi ħadd ieħor, informazzjoni tagħhom għandha turi up. Kif nista 'nagħmlu dan? Għal darb'oħra, dan jeħtieġ li nużaw xi Ajax. U hekk, aħna ser tiftaħ ajax.js. U hawn huwa dik il-funzjoni, cs50Info. Jekk l-isem xejn, I ritorn. Jien mhux se jagħmlu xi ħaġa jekk l-għażla vojta ġiet magħżula. Inkella, jien ser toħloq XMLHttpRequest ġdid. U allura jien se ngħid, meta l- bidliet readyState, sejħa din il-funzjoni. U jekk il-readyState hija 4 u l-istatus huwa ta '200, Heres ftit tal jQuery fuq il-linja 13. Imma kollha li qed nagħmel huwa qal, jibdlu l-kontenut tal infodiv li jkun x'ikun I marret lura bħala rispons mill HttpRequest tiegħi. X'inhu HttpRequest tiegħi? Ukoll, li d-dritt hawn fuq il-linja 18 u 19. Linja 18, jien bażikament preparazzjoni a IKOLLOK talba għal isem + html. U għal darb'oħra, l-isem hawnhekk hija l-argument li kien għadda fi bħala parametru biex cs50Info. Għalhekk bażikament, I am tgħaddi fil xi ħadd tal isem, li kien dak is-sett ta 'għażliet li rajna fil- drop-down menu fil-forma. Jien jkollna dak l-isem. U jien qal nixtieq li inti jekk jogħġbok jiksbu għalija li file.html, u mbagħad jibgħat dik it-talba. U sabiex il onreadystatechange qed jiġri li tkun qed tisma u l-istennija u l-istennija u l-istennija, sakemm il-readyState huwa ta '4, u l-istatus huwa ta' 200. Allura huwa lest li għandu jkun innotifikat, u t-talba kienet ta 'suċċess. U allura jekk huwa, li għaddej biex jibdlu l-kontenut tal infodiv li jkun it-test rispons li sirt lura. Mela ejja ara kif dan jista 'attwalment jaħdmu. Allura aħna ser ras għal browser tiegħi tieqa, u aħna ser tħares hawn. Mela ejja tagħti ħarsa lejn x'inhu għaddej hawn fil Ajax. Allura aħna ser jagħżlu xi ħadd mill-menu drop-down. Allura f'dan il-każ, ejja biss jagħżlu Hannah. U tinnota li s Hannah informazzjoni tkun inbidlet, imma jien ma kellhomx any-- tiegħi paġna ma kollox rikarigu. L-għalf qagħdu. Ħafna mill-għalf qagħdu. Ajax Test ma nbidilx. Il-buttuna innifsu, dan drop-down menu ma nbidlitx. Iżda l-informazzjoni hemm ma nbidlitx. U jiddependi fuq kif malajr jiċċaqlaq kompjuter tiegħi, inti fil-fatt tista 'tara li l-kontenut tisparixxi u mbagħad jerġa 'jidher verament malajr. Dik hija l-kontenut ikun mħassra mill infodiv, u mbagħad mibdula bi talba mhux sinkroniku ġdid. Mela jekk jien jaqilbu li jiġu ngħidu, Rob-- u għal darb'oħra, tagħti ħarsa, u forsi aħna ser tara fil-fatt jisparixxu u jerġgħu jitfaċċaw malajr. Tara li? Kif hija biss popped bogħod, u allura mimli mill-ġdid? Dik hija l--talba Ajax tip ta 'qed isir. U hekk skond il- persuna I jagħżlu, jien jagħmlu mhux sinkroniku differenti talba għall-fajl differenti li nkun fuq server tiegħi. U dak li jkun tiegħi infodiv aġġornament, ibbażati fuq liema minn dawn stajt magħżula. Allura li verament kollha hemm Ajax. Dan jippermetti li jagħmlu dawn mhux sinkroniku talbiet, aġġornamenti għall paġna. Mingħajr ma jkollhom jġedded il-paġna kollha, aħna qed tmur biex tikseb ġdida kontenut minnha billi tagħmel talba ġdida ġdida lis-server. U għalhekk, paġni tagħna jista 'jsir pjuttost ftit aktar dinamiku. U kif aħna nikseb aktar u aktar avvanzati, inti tista 'tikseb affarijiet simili jiġifieri, email inbox tiegħek, fejn inti ma għandekx tagħmel xejn. Inti ma għandekx ikklikkja drop-down menu jew ikklikkja xejn, u kollha f'daqqa, aktar ġodda tiegħek email turi up fil-quċċata. Li wkoll biss talba Ajax. Ajax qed titlob tiegħek server, il-server email, li jibgħat fuq l-informazzjoni dwar emails mhux aktar tard tiegħek, u l-bdil dak li tara fuq il- iskrin tkun issettjata ġodda tiegħek ta 'emails. U jekk għandek wieħed ġdid fil hemm, allura l-kontenut ta 'dik div se tinbidel sabiex tirrifletti il-kontenut aġġornata. Jien Doug Lloyd. Dan huwa CS50.