Autor Zpráva
Quax
Profil *
Nasiel som viacero tem, kde sa toto riesilo, nejak mi nefungovalo nic, co som nasiel, mozno aj preto, ze islo vzdy o fragmenty kodu

Mam subory x_content.js a x_content.php

x_content.js

var xmlHttp

function getXContent(int)
{
xmlHttp=GetXmlHttpObject(int)
if (xmlHttp==null)
 {
 alert ("Browser nepodporuje HTTP Request")
 return
 } 
var url="x_content.php"
url=url+"?number="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged; 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
} 


function stateChanged() 
{ 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("x_content").
 innerHTML=xmlHttp.responseText;
 } 
} 

function GetXmlHttpObject()
{ 
var objXMLHttp=null
if (window.XMLHttpRequest)
 {
 objXMLHttp=new XMLHttpRequest()
 }
else if (window.ActiveXObject)
 {
 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
return objXMLHttp
}



x_content.php obsahuje viacere php skripty, html a nejake tie javascripty. Tie sa samozrejme nevykonaju.

Tak napriklad. Ak by subor obsahoval
<script type="text/javascript">
<!--
document.write("BLABLA");
//-->
</script>


co mam spravit, aby sa skript vykonal? (samozrejme nechcem, aby sa mi vypisalo BLABLA na novu stranku, ale vnutri tagu s ID x_content

Co treba doplnit bud do x_content.js, alebo do x_content.php, aby to islo?
peta
Profil
Quax
co hlasi JS konzola za chybu?
U ajaxu je zname ze funguje jen a pouze ze serveru. A to bud jako http://localhost/ nebo http://stranka.cz/...
Cili pokud to chces testovad bez nainstalovaneho PHP a serveru, tak je treba zrusit
|| xmlHttp.readyState=="complete"
a pak ti to umi Firefo zpracovat

Ajax ti vrati bu textovy retezec text/html nebo XML dokument text/xml , cili pokud
'vnutri tagu s ID x_content'
tak tam musis mit script, ktery dany element prepisuje a to tento radek
innerHTML=xmlHttp.responseText;
musis smerovat na nejaky objekt. Samotne innerHTML bez niceho se povazuje za promennou.
x = xmlHttp.responseText;
y = x;
to je uplne to same jako to, co tam mas napsane.
Jak se pracuje s dokumentem se dozvis z prikladu zacatecnicke a dokument
jakpsatweb - javascript - priklady
jakpsatweb - javascript
peta
Profil
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>JS Ajax HttpRequest</title>
<script>
// --- BEGIN ajax ---
var ajax = new Object();
// prenosova funkce pro Mozillu
ajax.novyPrenos = null;
ajax.poslatGet = null;
ajax.poslatPost = null;
ajax.prenosStatus = true;

ajax.novyPrenosMoz = function(navrat_fce)
{
var prenos = null;
// zjisti, zda je prenosova funkce dostupna
try {prenos = new XMLHttpRequest();}
catch (e) {prenos = null;}
if (prenos!=null) // Jestlize ANO,
{
prenos.onreadystatechange = function() // pak kontroluj stav prenosu mou funkci
{
if (prenos.readyState==4) // prenos dokoncen
{
if (!ajax.prenosStatus || prenos.status==200) // status 200 lze a treba kontrolovat pri prenaseni mezi serverem
{if (window[navrat_fce]!=null) {window[navrat_fce](prenos.responseText);}} // jestlize existuje navratova funkce, zavolej ji
else {alert("Prenos se nezdaril!\nstav=" + prenos.status + "\nchyba=" + prenos.statusText);} //POST server
}
}
// prenos.onprogress = ajax.prenos.nacitani; // presmeruj udalost prubeh prenosu na funkci nacitani
// prenos.onerror = ajax.prenos.chyba; // presmeruj udalost chyba prenosu na funkci chyba
}
return prenos;
}

ajax.novyPrenosIEtyp = null;
ajax.novyPrenosIE = function(navrat_fce)
{
var prenos = null;
// zjisti, zda je prenosova funkce dostupna
try {prenos = new ActiveXObject(ajax.novyPrenosIEtyp);}
catch (e) {prenos = null;}
if (prenos!=null) // Jestlize ANO,
{
prenos.onreadystatechange = function() // pak kontroluj stav prenosu mou funkci
{
if (prenos.readyState==4)
{
if (prenos.status==200) // status 200 lze a treba kontrolovat pri prenaseni mezi serverem
{if (window[navrat_fce]!=null) {window[navrat_fce](prenos.responseText);}} // jestlize existuje navratova funkce, zavolej ji
else {alert("Prenos se nezdaril!\nstatus=" + prenos.status + "\nchyba=" + prenos.statusText);} //POST server
}
}
// prenos.onprogress = ajax.prenos.nacitani; // presmeruj udalost prubeh prenosu na funkci nacitani
// prenos.onerror = ajax.prenos.chyba; // presmeruj udalost chyba prenosu na funkci chyba
}
return prenos;
}

ajax.novyPrenosGet = function(adresa,hodnoty,navrat_fce)
{
var z = ajax.novyPrenos(navrat_fce);
if (hodnoty!=="") // pokud jsou hodnoty, zjisti, zda adresa konci '?' nebo '' a pridej na konec hodnoty
{adresa+= ((adresa.indexOf("?")>-1) ? "&" : "?") + hodnoty;}
z.open("GET",adresa,true);
z.send(null);
};
ajax.novyPrenosPost = function(adresa,hodnoty,navrat_fce)
{
var z = ajax.novyPrenos(navrat_fce);
z.open("POST",adresa,true);
z.setRequestHeader('Content-type','application/x-www-form-urlencoded' );
z.send(hodnoty);
};

// prirad prenosovou funkci do ajax.novyPrenos
ajax.init = function()
{
var prenos = null;
// existuje-li XMLHttpRequest, zkus priradit prenos pro mozilu
if (window.XMLHttpRequest) //Moz1.5 / IE7 / Op7.6+ / Saf
{
if (prenos = ajax.novyPrenosMoz(null))
{ajax.novyPrenos = ajax.novyPrenosMoz;}
}
// existuje-li ActiveXObject, zkus priradit prenos pro explorer
else {if (window.ActiveXObject) //IE5.x+
{
var i,msX;
msX = new Array( // pole s ruznymi nazvy prenosu pro IE, mel by fungovat ten prvni
'Msxml2.XMLHTTP',
'Msxml2.XMLHTTP.7.0',
'Msxml2.XMLHTTP.6.0',
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Microsoft.XMLHTTP');
for (i=0;i<msX.length;i++)
{
ajax.prenosIEtyp = msX[i];
try {
prenos = new ajax.prenosIE(null);
if (prenos!=null)
{ajax.novyPrenos = ajax.novyPrenosIE; break;} // pokud se da prenos pouzit, prerus cyklus
}
catch (e) {prenos = null;}
}
}}
// prirad odesilani, jestli se da prenosova funkce pouzit
if (prenos!=null)
{
ajax.poslatGet = ajax.novyPrenosGet;
ajax.poslatPost = ajax.novyPrenosPost;
}
// ja tu mam jeste IFRAME, SCRIPT a Java verzi, ale tim vas nebudu zatezovat
}

ajax.init();
//ajax.poslatGet('http://jakpsatweb','test=1&zkouska=2','alert');
//ajax.poslatPost('http://jakpsatweb','test=1&zkouska=2','alert');
// --- END ajax ---

function zobraz(text)
{
document.getElementById('misto_zobrazeni').innerHTML = text.replace(/[<]/g,'&lt;').replace(/[>]/g,'&gt;');
}

</script>
</head>


<body>

<h2>Ajax HttpRequest pomocí nativní funkce</h2>

<p>Ajax je způsob, jak přenášet data bez obnovonání celé stránky. Je třeba s ním
nakládat opatrně, aby jste nakonec nepřenášeli víc než bez něj.</p>
<p>Tato ajaxová metoda funguje dobře ze serveru, s nastaveným kódováním
UTF-8 (odkaz začíná http://vasestranka.cz/). Provoz z disku lze vyzkoušet
instalací serveru (odkaz pak začíná přes http://localhost/) nebo ve Firefoxu
bez kontroly na stav prenosu, <code>prenos.status==200</code> , kterou lze vypnout
nastaveni <code>ajax.prenosStatus = false;</code> .</p>

<form action="#">
<button onclick="ajax.poslatPost('./ajax.htm','text=ahoj','zobraz')">Odeslat pozadavek</button>
</form>

<p>Po kliknutí na tlačítko se zobrazí HTML kód tohoto dokumentu pod nadpis
<b>Zdrojový kód</b>.</p>

<p>Používaný typ dokumentu býva text/html a text/xml a kódování UTF-8.
Doporučuji si obě hodnoty pohlídat a nastavit pro váš program, protože
server může mít přednastavené obě hodnoty jinak. Totéž pro javascript i externí.</p>
<p>Typické nastavení pro PHP:</p>
<p class="code">
<code>&lt;?php header('Content-type: text/html; charset=utf-8'); ?&gt;</code>
<br/><code>&lt;?php header('Content-type: text/html; charset=windows-1250'); ?&gt;</code>
<br/><code>&lt;?php header('Content-type: text/xml; charset=utf-8'); ?&gt;</code>
</p>

<h3>Zdrojový kód</h3>
<pre id="misto_zobrazeni" style="border:1px solid #666;background:#ddd;padding:0.5em;"></pre>

<h3>Souvisejici odkazy</h3>
<ul>
<li><a href="http://www.w3.org/TR/XMLHttpRequest/"> www.w3.org</a>; XMLHttpRequest podle W3c</li>
<li><a href="http://developer.mozilla.org/en/docs/XMLHttpRequest"> developer.mozilla.org</a> XMLHttpRequest podle Mozilly</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms760305(VS.85).aspx"> msdn.microsoft.com</a> XMLHttpRequest podle MS</li>
<li><a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html"> developer.apple.com</a> XMLHttpRequest podle Apple</li>
</ul>

</body>
</html>

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: