Autor | Zpráva | ||
---|---|---|---|
Suta Profil |
#1 · Zasláno: 19. 12. 2010, 03:10:01 · Upravil/a: Suta
Předem uvádím, že kód je vytvořen pouze pro ilustraci (jednoduše můžete vyzkoušet), nicméně naprosto funkční.
Příklad můžete zkusit také přímo zde: www.petrzavicak.cz/pz/00/ <script type="text/javascript"> function createXMLHttpRequest() { return new XMLHttpRequest(); // (spi sladce, IE6, a pozdravuj prarodiče) } var xhReq = createXMLHttpRequest(); xhReq.open("get", "connectionMonitor.php", true); var requestTimer = setTimeout(function() { xhReq.abort(); alert("Zavolal jsem metodu shReq.abort() - v konzoli je chybova hlaska, proc?"); }, 3000); xhReq.onreadystatechange = function() { if (xhReq.readyState != 4) { return; } clearTimeout(requestTimer); if (xhReq.status != 200) { return; } var serverResponse = xhReq.responseText; alert(serverResponse); }; xhReq.send(null); </script> // soubor connectionMonitor.php <?php header("Cache-Control: no-cache"); header("Expires: Fri, 20 Oct 1998 14:19:41 GMT"); header("Content-Type: text/plain"); sleep(11); echo "Kozel String, těší mě."; ?> 1. Pokud do tří vteřin nepřijde od serveru odpověď, je shReg zrušen metodou xhReq.abort(); 2. Server pochopitelně do tří vteřin neodpoví, protože si schrupne celých 11 vteřin, a zavolání metody abort() vyvolá chybu v konzoli prohlížeče: Chrome: Failed to load resource - connectionMonitor.php Firefox: Aborted - connectionMonitor.php IE: chybu nezahlásí žádnou (?) Očividně se tedy jedná o volání metody abort() - kde je chyba? Hledal jsem tři hodiny na internetu vše kolem volání této metody, nikde se nepíše o mnou uvedeném problému. Pozn.: pokud v uvedeném .php souboru smažu řádek s uspáním serveru ( sleep(11) ), server odpoví, prohlížeč odpověď v pořádku obdrží a zruší časovač. Díky za pomoc a radu. |
||
Časová prodleva: 5 dní
|
|||
Chamurappi Profil |
#2 · Zasláno: 24. 12. 2010, 07:18:57
Reaguji na Sutu:
„return new XMLHttpRequest(); // (spi sladce, IE6, a pozdravuj prarodiče)“ Odrovnáš tím i novější Explorery, které mají v nastavení vypnutý nativní XMLHttpRequest . (Kupodivu existují takoví uživatelé — jejich motivaci neznám.)
„Očividně se tedy jedná o volání metody abort() - kde je chyba?“ Podle popisu si myslím, že to není chyba, ale obyčejná informace, že se přerušilo spojení. V konzoli Firefoxu žádnou hlášku nevidím. Ve Firebugu se „Aborted“ ukazuje, protože máš zapnuté sledování XMLHttpRequest ů (to je výchozí nastavení) a zrovna tenhle XMLHttpRequset byl prostě přerušen.
|
||
Časová prodleva: 4 dny
|
|||
Suta Profil |
#3 · Zasláno: 28. 12. 2010, 18:44:52
Chamurappi:
„Odrovnáš tím i novější Explorery, které mají v nastavení vypnutý nativní XMLHttpRequest.“ O tom jsem nevěděl. Co přesně myslíš tím odrovnáním? Pokud je XMLHttpRequest vypnutý, pak by mělo být jedno, jakým způsobem probíhá pokus o jeho vytvoření. Oprav mě, pokud se pletu. |
||
Chamurappi Profil |
#4 · Zasláno: 28. 12. 2010, 22:40:28
Reaguji na Sutu:
Tools / Internet Options / Advanced / Security / Enable native XMLHTTP support (v anglickém Internet Exploreru 7) — když zrušíš odškrtnutí, vypneš tím nativní XMLHttpRequest , ale původní postup s ActiveXObject em funguje pořád. Tipnul bych, že to mají někteří lidé vypnuté kvůli skriptům z doby před vznikem Exploreru 7, které počítaly, že co umí XMLHttpRequest , to je Mozilla a co je Mozilla, to umí i něco dalšího, co Explorer neumí (třeba overrideMimeType )… ale to je jen odhad.
|
||
Časová prodleva: 13 let
|
0