Autor Zpráva
Legáček
Profil
Zdravim, chtěl bych vás poprosit o radu. Já vim, že tu bylo už asi 1000 krát, ale prostě né a né mi to fungovat a už se stim trápím nějakou tu dobu.

<script language="JavaScript" type="text/javascript">
function goto_page(page) {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }
    var url="shoutbox_1.php";
    url=url+"?page="+page;
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
            document.getElementById('shoutbox_txt').innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}

function GetXmlHttpObject() {
    var xmlhttp=null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlhttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlhttp;
}
		xmlHttp.onreadystatechange=function(){	
      function refreshIt(divID, MyPage) {
				setTimeout('GetXmlHttpObject()', 2000);			
				document.getElementById(#divID).innerHTML=xmlHttp.responseText;
			}
				xmlHttp.open("GET",#MyPage,true);
				xmlHttp.send(null); 
		}
</script>

tady je html
<div id="shoutbox">
<form method="post">
<table cellspacing="1">
  <tr>
  <td><textarea name="area" cols="28"></textarea></td>
  </tr>
  <tr>
  <td style="float:right;"><input type="submit" value="Odeslat" name="submit" onClick="refreshIt(shoutbox_txt, 'shoutbox.php')" /></td>
  </tr>                                                                                         
</table>
</form>
  <div id="shoutbox_txt">
        ........
  </div>
</div>


Javascript nemám rád, ale co se dá dělat někdy se použít musí. Jde o to že když zmáčknu sumbit, tak div shoutbox_txt se refreshne. Děkuji za všechny rady.
Chamurappi
Profil
Reaguji na Legáčka:
1) Chceš-li volat funkci refreshIt, nesmíš ji mít jako lokální uvnitř jiné funkce.
2) Řetězce se píší do uvozovek. (Řádek 8 v HTML.)
3) Před názvy proměnných se nepíší mřížky. Jak jsi na to přišel? (Řádky 39 a 41 v JS.)
4) Pokud onclick neskončí na return false, vykoná se standardní odeslání formuláře.
4) Máš to celé nějaké… zmatené.

Smaž z JS vše kromě funkce GetXmlHttpObject (tedy řádky 2 až 18 a 36 až 43) a přidej novou funkci refreshIt:
function refreshIt(divID, MyPage) {
  var xmlHttp = GetXmlHttpObject();
  if(!xmlHttp) return false;
  xmlHttp.open("GET", MyPage, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState != 4) return;
    document.getElementById(divID).innerHTML = xmlhttp.responseText;
  }
  xmlHttp.send(null);
  return true;
}
To je všechno. Žádná věda.

A ten čudlík uprav:
<input … onClick="return !refreshIt('shoutbox_txt', 'shoutbox.php')">
Legáček
Profil
Děkuji moc za rady.
- řádek 8 jsem upravil;
- radíte mi abych smazal řádky 2-16, jenže těmito řádky dělám stránkování chatu a nejde to prostě smazat. Tak co by jste mi prosim poradil na zkloubení těchto dvou věcí?
- zmatené to mám protože JS moc nerozumím a snažím se zkoušet různé věci, proto tam mám i mřížky před proměnými. Někde jsem to viděl v příkladu, tak jsem to tak zkusil.

PS: Teď jsem to zkoušel upravit celý přesně jak mi tu píšeš a stejně mi to nejde :( proste se ten div(shoutbox_txt) kde je chat nerefreshne při zmáčknutí submitu :(

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: