Movatterモバイル変換


[0]ホーム

URL:


Пређи на садржај
Википедија
Претрага

XMLHttpRequest

С Википедије, слободне енциклопедије

XMLHttpRequest (XHR) jeAPI dostupan zaskriptne jezike kao što jeJavaScript. Koristi se za slanjeHTTP iliHTTPS zahteva direktno kaveb serveru i upućuje odgovore servera nazad ka skripti.[1] Podaci mogu biti primljeni sa servera kaoJSON,[2]XML,[3]HTML, ili tekst.[4] Podaci dobijeni u odgovoru mogu se direktno preneti uDOM trenutno aktivnog dokumenta bez potrebe za učitavanjem noveinternet stranice. Podaci dobijeni u odgovoru takodje mogu bitiinterpretirani od straneklijentski orijentisanihskriptnih jezika.

XMLHttpRequest ima bitnu ulogu u razvoju internet softvera korišćenjemAjax tehnologija. Trenutno ga koriste mnoge internet stranice za implementaciju dinamičkihinternet aplikacija. Neki od primera ovih aplikacija sudžimejl,gugl mape,fejsbuk, i mnogi drugi.

XMLHttpRequest mora poštovati politiku, pravila brauzvera, zbog sigurnosnih razloga, zahtev će biti uspešan ako je potekao sa istogservera koji servira originalnu veb stranicu. Postoje alternativni načini da se ovo prevaziđe(izbegne).

Istorija i podrška

[уреди |уреди извор]

KonceptXMLHttpRequest objekta je originalno kreiran od programera izOutlook Web Access (iz Microsoft) zaMicrosoft Exchange Server 2000.[5]Interfejs zvanIXMLHTTPRequest je razvijen i implementiran u drugoj verzijiMSXML biblioteke koristeci ovaj koncept.[5][6] Druga verzija MSXML biblioteke je isporučena saInternet Explorer 5.0 u Martu 1999 godine,ActiveX je omogućavao pristupIXMLHTTPRequest interfejsu koristećiXMLHTTPomotač-wrapper MSXML biblioteke.[7]

Mozila projekat razvio je i implementirao interfejs pod nazivomnslXMLHttpRequest uGecko motornom rasporedu. Ovaj interfejs rađen je po uzoru na Microsoft-ovIXMLHTTPRequest koliko god je to bilo moguće..[8][9] Mozila je kreirala omotač za korišćenje ovog interfejsa preko JavaScript objekta koji se nazivaXMLHttpRequest.[10]XMLHttpRequest objekat bio je dostupan kada je Gecko verzija 0.6 objavljena 6.decembra 2000. Godine[11][12] , ali nije bio potpuno funkcionalan. Tek verzija 1.0 Gekoo objavljena 5.juna 2002.[11][12]XMLHttpRequest objekat postao je de fakto standard kod drugih velikih veb klijenata realizovan uSafari 1.2, objavljen u februaru 2004.godine[13]Konqueror,Opera 8.0 objavljena u aprilu 2005[14] iiCab 3.0b352 objavljena u septembru 2005.godine.[15]

[W3C|World Wide Web Consortium objavio je nacrt specifikacije zaXMLHttpRequest objekat 5. Aprila 2006. Izmenjen od straneAnne van Kesteran zaOpera Software i Dean Jackson of W3C.[16] Njen cilj bio je "da se dokumentuje skup minimalnih iteroperabilnih funkcija zasnovan na postojećim implementacijama, što omogućava Veb programerima da koriste ove funkcije bez platforme-specifičnog koda." Poslednja revizija specifikacije XMLHttpRequest objekta bila je 19. Novembra 2009, kao poslednji radni nacrt.[17][18]Microsoft je dodaoXMLHttpRequest objekat identifikator svojim skriptama uInternet Explorer 7.0 objavljnom u oktobru 2006.[7]

Sa pojavom cross-browsera JavaScript biblioteka kao što jejQuery iPrototype JavaScript Framework, programeri mogu da pozovu XMLHttpRequest bez kodiranja direktno na API. Prototip je omogućio asinhroni objekat tražilac koji se nazivaAjax. Zahtev koji pokriva osnovnu implementaciju pregledača obezbeđujući pristup do njega.[19] jQuery objekti predstavljaju ili wrapuju elemente iz trenutne klijentske strane DOM. Svi oni imaju.load() Metod koji uzima URI parametar i pravi XMLHttpRequest ka URI-ju, onda postavimo na bilo koja mesta vraćeni HTML u HTML element koji predstavlja jQuery objekat.[20]

W3C je objavio još jedan od nacrta specifikacije zaXMLHttpRequest objekat. „XMLHttpRequest Level 2“ 25. 2. 2008.godine.[21] Nivo 2 se sastoji od proširene funkcionalnosti zaXMLHttpRequest objekat, uključujući, ali ne ograničavajući, napredak, podrška za cross-site request i rešavanje bajt sistema. Najnovija revizija XMLHttpRequest Level2 specifikacije je od 16.avgusta 2011, koja je i dalje u upotrebi.[22]

XMLHttpRequest[23] verzije 2 spojen je u glavnu XMLHttpRequest specifikaciju i ne postoji više verzija 1 i verzija 2.

Podrška u verzijama 5, 5.5 i 6 Internet Explorer-a

[уреди |уреди извор]

U verzijama 5 i 6 Internet Explorer-a nije definisan indetifikator za XMLHttpRequest objekat u okviru njihovog skript jezika s obzirom da XMLHttpRequest indetifikator nije bio standard u vreme njihovog predstavljanja.[7] Kompatibilnost unazad može biti postignuta korišćenjem detekcije objekata ukoliko XmlHttpRequest indetifikator ne postoji.[24]

Veb stranice koje koriste XMLHttpRequest mogu ublažiti trenutne manje razlike u impementaciji bilo obmotavanjem XMLHttpRequest objektaJavaScript omotačem, bilo korišćenjem postojećeg okvira(framework) koji to radi. U bilo kojem slučaju, omotač bi trebao da detektuje the abilities trenutne implementacije i radi u okviru njenih zahteva.

Microsoft će podžavati Windows XP a samim tim i Internet Explorer 6 do 8 April 2014. Primer obmotavanja u JavaScript-u prikazan je ispod.

/*   Provide the XMLHttpRequest constructor for Internet Explorer 5.x-6.x:   Other browsers (including Internet Explorer 7.x-9.x) do not redefine   XMLHttpRequest if it already exists.   This example is based on findings at:   http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx*/if(typeofXMLHttpRequest==="undefined"){XMLHttpRequest=function(){try{returnnewActiveXObject("Msxml2.XMLHTTP.6.0");}catch(e){}try{returnnewActiveXObject("Msxml2.XMLHTTP.3.0");}catch(e){}try{returnnewActiveXObject("Microsoft.XMLHTTP");}catch(e){}// Microsoft.XMLHTTP points to Msxml2.XMLHTTP and is redundantthrownewError("This browser does not support XMLHttpRequest.");};}

Drugi način za postavljanje XMLHttpRequest za sve pregledače

[уреди |уреди извор]
functiongetXMLHttpRequestObject(){varref=null;if(window.XMLHttpRequest){ref=newXMLHttpRequest();}elseif(window.ActiveXObject){// Older IE.ref=newActiveXObject("MSXML2.XMLHTTP.3.0");}returnref;}

HTTP zahtev

[уреди |уреди извор]

Ova sekcija demonstrira kako funkcioniše zahtev korišćenjem XMLHttpRequest objekt u okviru korisničkih agenata baziranih na W3C nacrtu.

Metodopen

[уреди |уреди извор]

HTTP iHTTPS zahtev XMLHttpRequest objekta mora biti inicijalizovan krozopenmethod. Ovaj metod mora biti pozvan pre slanja samog zahteva kako bi potvrdio i rešio zahtev. Ovaj metod ne garantuje postojanje URL adrese ili tačnost poslatih podataka. Ovaj metod moze imati najvise petparametera, ali sam zahtev moze imati najvise dva za inicijalizaciju samog zahteva.

open(Method, URL, Asynchronous, UserName, Password )

Prvi parametar metoda jetext string koji označava koji HTTP zahtev se koristi. Zahtevi koji moraju biti podržani od strane usaglašenihuser agent, definisani od straneW3C nacrta za XMLHttpRequest objekte, su:[25]

HEAD (Podržan od strane Internet Explorer 7 (i novije verzije))

Ipak, zahtevi nisu ograničeni samo na gore navedene. Po W3C nacrtu internet pregledači mogu da podržavaju dodatne zahteve.

Drugi parametar metoda je takodje text string, ovaj parametar označavaURL HTTP zahteva. Preporuka W3C-a je da internet pregledači treba da prijave grešku i ne dozvole zahtev u slučaju da URL ima drugačiji port od ili ihost URI komponentu nego trenutni dokument.Treći parametar jeboolean vrednost koja označava da li će zahtev biti asinhron, i nije obavezan po W3C nacrtu. Moze se pretpostaviti da je podrazumevana vrednost ovog parametra tačno(true), za korisničke agente usaglašene sa W3C nacrtom, ako on nije naveden. Asinhroni zahtev(vrednost true) neće čekati odgovor servera, već će skripta nastaviti sa izvršavanjem. Sinhroni zahtev(vrednost false) će blokirati izvršavanje trenutne skripte sve dok zahtev ne bude završen.

Četvrti i peti parametak su korisnočko ime i šifra. Ovi parametri mogu biti poslati za autentikaciju i autorizaciju.

setRequestHeader metod

[уреди |уреди извор]

Nakon uspešne inicijalizacije zahteva, moze biti pozvansetRequestHeader metod XMLHttpRequest objekta za slanje HTTP hedera zajedno sa zahtevom.

setRequestHeader(Name, Value )

Prvi parametar je tipa string i predstavlja ime hedera. Drugi parametar je takodje tipa string i predstavlja vrednost. Ovaj metod mora biti pozvan za svaki heder koji se mora poslati sa zahtevom.

send metod

[уреди |уреди извор]

Za slanje HTTP zahteva mora biti pozvan send metod XmlHttpRequest objekta. Ovaj metod ima samo jedan parametar, sadržinu koja se šalje sa zahtevom.

send (Data )

Ovaj parametar može biti izostavljen ako se nikakva sadržina ne treba poslati. Po W3C nacrtu ovaj parametar može biti bilo kog tipa koji se može konvertovati u string, a da je podržan od strane skript jezika. Ako korisnički agent ne može da obradi ovaj parametar onda on treba biti ignorisan.

Ukoliko je parametar DOM objekat korisnički agent treba da osigura da je objekat konvertovan u dobro formiran XML.

onreadystatechange osluškivač događaja

[уреди |уреди извор]

Ako jeopen metod XMLHttpRequest objekta pozvan sa trecim parametromtrue za asihroni zahtev,onreadystatechange osluškivač događaja će automatski biti pozvan za sve akcije koje menjajureadyState svojstvo XMLHttpRequest objekta.

Promene stanja funkcionišu na sledeći način:

  • Nakon što je uspešno pozvanopen metod,readyState svojstvo XMLHttpRequest objekta trebalo bi da dobije vrednost 1.
  • Nakon sto je pozvansend metod i dobijen odgovor u vidu HTTP zaglavlja,readyState svojstvo XMLHttpRequest objekta trebalo bi da dobije vrednost 2.
  • Kada sadržina HTTP odgovora počne da se učitava,readyState svojstvo XMLHttpRequest objekta trebalo bi da dobije vrednost 3.
  • Nakon što je sadržina HTTP odgovora učitana,readyState svojstvo XMLHttpRequest objekta trebalo bi da dobije vrednost 4.

Osluškivač reaguje samo na promene stanja koje su se desile nakon što je osluškivač definisan. Kako bi detektovao stanja 1 i 2, osluškivač mora biti definisan pre nego sto je pozvan metod open. Metod open mora biti pozvan pre metoda send.

xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState===4){alert(xmlhttp.readyState);}};xmlhttp.open('GET','somepage.xml',true);xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');// Tells server that this call is made for ajax purposes.// Most libraries like jQuery/Prototype/Dojo do thisxmlhttp.send(null);// No data need to send along with the request.

abort metod

[уреди |уреди извор]

Ovaj metod prekida zahtev ako readyState XMLHttpRequest objekta nije jos postao 4.[26]abort metod obezbeđuje da se prekine očekivanje odgovora u asinhronom zahtevu.

abort()

Neke AJAX biblioteke koriste abort metod za prekidanje potecijalnih duplikata ili loših zahteva.[27]

HTTP odgovor

[уреди |уреди извор]

Nakon uspešnog i završenog poziva send metoda, ako je server vratio validan XML i ako jeContent-Type header vraćen od strane servera prepoznat kao Internet media type za XML od strane korisničkog agenta, responseXML svojstvo XMLHttpRequest objekta će sadžati DOM objekat. Drugo svojstvo, responseText će sadržati odgovor servera kao tekst.

Cross-domain zahtev

[уреди |уреди извор]

U početku razvojaWorld Wide Web, otkivena je da je moguće narušiti privatnost korisnika ukoliko se koristi JavaScript za razmenu informacija izmedju dve Veb stranice. Zbog toga svi moderni Veb pregledači implementirajusame origin policy kako bi sprečili većinu takvih napada, kao što jecross-site scripting. XMLHttpRequest podaci su deo ove sigurnosne politike, ali ponekad programeri žele da namerno zaobidju ograničenja. To se ponekad radi zbog omogućavanja poddomena. Na primer, slanje XmlHttpRequest zahteva sa stranice koja se nalazi nafoo.example.com kako bi se dobile informacija sabar.example.com ne bi uspelo ako se ne bi zaobišla neka ograničenja.

Postoji nekoliko alternativa za zaobilaženje ovih sigurnosnih svojstava, uključijući korišćenjeJSONP,Cross-Origin Resource Sharing ili plaginova kao sto su Flash ili Silverlight. XMLHttpRequest Level 2 takodje uključuje svojstvo za komunikaciju sa drugim domenima.

Pogledajte još:

[уреди |уреди извор]

Reference

[уреди |уреди извор]
  1. ^„XMLHttpRequest object explained by the W3C Working Draft”. W3.org. Приступљено14. 7. 2009. 
  2. ^„Response entity body of XMLHttpRequest, W3C Editor's Draft”. W3.org. 6. 2. 2012. Приступљено5. 2. 2012. 
  3. ^„The responseXML attribute of the XMLHttpRequest object explained by the W3C Working Draft”. W3.org. Приступљено14. 7. 2009. 
  4. ^„The responseText attribute of the XMLHttpRequest object explained by the W3C Working Draft”. W3.org. Приступљено14. 7. 2009. 
  5. ^аб„Članak iz istorije vezan za poćetak XMLHttpRequest”. Alexhopmann.com. 31. 1. 2007. Архивирано изоригинала 23. 06. 2007. г. Приступљено14. 7. 2009. 
  6. ^„Specifikacija za IXMLHTTPRequest interfejs od Microsoft Developer Network”. Msdn.microsoft.com. Приступљено14. 7. 2009. 
  7. ^абвDutta, Sunava (23. 1. 2006).„Native XMLHTTPRequest object”.IEBlog. Microsoft. Приступљено30. 11. 2006. 
  8. ^„Specification of the nsIXMLHttpRequest interface from the Mozilla Developer Center”. Developer.mozilla.org. 16. 5. 2008. Архивирано изоригинала 17. 10. 2008. г. Приступљено14. 7. 2009. 
  9. ^„Specification of the nsIJSXMLHttpRequest interface from the Mozilla Developer Center”. Developer.mozilla.org. 3. 5. 2009. Архивирано изоригинала 17. 11. 2008. г. Приступљено14. 7. 2009. 
  10. ^„Specification of the XMLHttpRequest object from the Mozilla Developer Center”. Developer.mozilla.org. 3. 5. 2009. Приступљено14. 7. 2009. 
  11. ^аб„Version history for the Mozilla Application Suite”. Mozilla.org. Архивирано изоригинала 10. 04. 2009. г. Приступљено14. 7. 2009. 
  12. ^аб„Downloadable, archived releases for the Mozilla browser”. Archive.mozilla.org. Приступљено14. 7. 2009. 
  13. ^„Archived news from Mozillazine stating the release date of Safari 1.2”. Weblogs.mozillazine.org. Архивирано изоригинала 02. 06. 2009. г. Приступљено14. 7. 2009. 
  14. ^„Press release stating the release date of Opera 8.0 from the Opera website”. Opera.com. 19. 4. 2005. Архивирано изоригинала 20. 01. 2009. г. Приступљено14. 7. 2009. 
  15. ^Soft-Info.org.„Detailed browser information stating the release date of iCab 3.0b352 from”. Soft-Info.com. Архивирано изоригинала 25. 07. 2011. г. Приступљено14. 7. 2009. 
  16. ^„Specification of the XMLHttpRequest object from the Level 1 W3C Working Draft released on April 5th, 2006”. W3.org. Приступљено14. 7. 2009. 
  17. ^„XMLHttpRequest W3C Working Draft 19 November 2009”. W3.org. Приступљено17. 12. 2009. 
  18. ^„W3C Process Document, Section 7.4.2 Last Call Announcement”. W3.org. Приступљено17. 12. 2009. 
  19. ^Porteneuve 2007, стр. 183.
  20. ^Chaffer & Swedberg 2007, стр. 107–156 harvnb грешка: више циљева (2×): CITEREFChafferSwedberg2007 (help)
  21. ^„Specification of the XMLHttpRequest object from the Level 2 W3C Working Draft released on February 25th, 2008”. W3.org. Приступљено14. 7. 2009. 
  22. ^„XMLHttpRequest Level 2, W3C Working Draft (Latest Version)”. W3.org. Приступљено19. 11. 2010. 
  23. ^„XMLHttpRequest Editor's Draft 5 December 2011”. w3.org. Приступљено5. 12. 2011. 
  24. ^„Ajax Reference (XMLHttpRequest object)”. JavaScript Kit. 22. 7. 2008. Приступљено14. 7. 2009. 
  25. ^„Dependencies of the XMLHttpRequest object explained by the W3C Working Draft”. W3.org. Приступљено14. 7. 2009. 
  26. ^„XMLHttpRequest - Document Object Model (DOM)”. Mozilla. Приступљено5. 4. 2013. 
  27. ^„In-Order AJAX Handling”. Antradar Software. 10. 3. 2012. Приступљено20. 4. 2013. 

Literatura

[уреди |уреди извор]
Викикњиге имају више информација оXMLHttpRequest

Specifikacija

[уреди |уреди извор]

Browsers - Pregledači

[уреди |уреди извор]

Ostalo

[уреди |уреди извор]
Производи и
стандарди
Препоруке
Напомене
Радни нацрти
Смернице
Иницијатива
Застарело
Организације
Изабране групе
Радне групе
Затворене групе
Софтвер
Прегледачи
Конференције
XMLHttpRequest nasrodnim projektima Vikipedije:
Podaci na Vikipodacima
Преузето из „https://sr.wikipedia.org/w/index.php?title=XMLHttpRequest&oldid=29242955
Категорије:
Сакривене категорије:

[8]ページ先頭

©2009-2026 Movatter.jp