Autor | Zpráva | ||
---|---|---|---|
TomasJ Profil |
#1 · Zasláno: 20. 9. 2011, 21:22:25 · Upravil/a: TomasJ
Ahoj potřebuji každé 2 sekundy přepisovat obsah jednoho <div> ale responseText mi vrací prázdný řetězec... Nevíte proč?
<script type="text/javascript"> function UpdatePlayers() { var httpRequest; if (typeof window.ActiveXObject != "undefined") { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } httpRequest.open("GET", "players.php", true); httpRequest.onreadystatechange = function() { ProcessPlayers(httpRequest); }; httpRequest.send(null); } function ProcessPlayers(httpRequest) { if (httpRequest.readyState == 4) { document.getElementById("map").innerHTML = httpRequest.responseText; } } setInterval("UpdatePlayers()", 2000); </script> V souboru players.php je vše správně, to jsem zkoušel... Děkuji za pomoc. |
||
Bronzi Profil |
#2 · Zasláno: 20. 9. 2011, 21:34:28
Problém je v tom, že proměnou httpRequest nedostaneš jako argument funkce ProcessPlayers ale musíš si jí uložit bokem.
Takto by to mělo fungovat: <script type="text/javascript"> var httpRequest; function UpdatePlayers() { if (typeof window.ActiveXObject != "undefined") { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } httpRequest.open("GET", "players.php", true); httpRequest.onreadystatechange = function() { ProcessPlayers(httpRequest); }; httpRequest.send(null); } function ProcessPlayers() { if (httpRequest.readyState == 4) { document.getElementById("map").innerHTML = httpRequest.responseText; } } setInterval("UpdatePlayers()", 2000); </script> |
||
TomasJ Profil |
#3 · Zasláno: 20. 9. 2011, 21:56:40 · Upravil/a: TomasJ
Díky, ale pořád to nejde, je to úplně to samé :-/
Kód jsem zpřehlednil a nyní ho mám takto, nicméně nejde... <script type="text/javascript"> var httpRequest; function UpdatePlayers() { if(typeof window.ActiveXObject != "undefined") httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); else httpRequest = new XMLHttpRequest(); httpRequest.open("GET", "players.php", true); httpRequest.onreadystatechange = ProcessPlayers; httpRequest.send(null); } function ProcessPlayers() document.getElementById("map").innerHTML = httpRequest.responseText; setInterval("UpdatePlayers()", 2000); </script> |
||
Chamurappi Profil |
#4 · Zasláno: 20. 9. 2011, 22:06:46
Reaguji na Bronziho:
„proměnou httpRequest nedostaneš jako argument funkce ProcessPlayers“ Proč by ji nedostal? Globální proměnnou nepotřebuje. Reaguji na TomaseJ: „Kód jsem zpřehlednil“ To bych neřekl. Na řádku 12 jsi ho i rozbil odmazáním závorek (což bohužel v Mozille funguje). Nejspíš budeš mít chybu ve skriptu na straně serveru. Jsi-li si jistý, že players.php něco vrací, prosím o odkaz na živou ukázku.
|
||
TomasJ Profil |
#5 · Zasláno: 20. 9. 2011, 22:19:42
http://samp.k3s4.sk/gamemap.php
První 2 sekundy je vše na mapě načtené z players.php... players.php je ve stejné složce. |
||
Chamurappi Profil |
#6 · Zasláno: 20. 9. 2011, 22:40:46
Reaguji na TomaseJ:
Hlásí mi to syntaktickou chybu kvůli té chybějící závorce, o které jsem se před půl hodinou zmiňoval. Proč mi házíš klacky pod nohy? V Mozille mi players.php skutečně vrací prázdný řetězec. Příčina problému není v JS.
|
||
TomasJ Profil |
#7 · Zasláno: 20. 9. 2011, 22:48:49 · Upravil/a: TomasJ
Jenže první 2 sekundy (než se JS skript spustí) jsou body na té mapě generované tím players.php, jen je to includované do
<div id="map"></div> Takto: <?php echo '<div id="map">'; include('players.php'); echo '</div>'; ?> Omlouvám se, chyba byla v tom, že jsem includoval soubor s PHP definicí na soubor který se má načíst, jenže v samotném players.php nebyl, byl pouze v tom gamemode.php... Tak se omlouvám za zmatení :-) |
||
Časová prodleva: 13 let
|
0