Autor Zpráva
Marenek
Profil *
Ahoj, mrkněte sem prosím, ať víte o čem mluvím:

http://coupe.fball.org/

Řeč bude o těch třech tabulkách, první se jmenuje Tabulky, druhá Rozpis, třetí Výsledky.

Ta první tabulka posílá data už pomocí AJAXU.

Tímto scriptem:

var httpRequest


function vyber(str)

{

var url="send.php?" + str; // tedy si zavolam asp (v tvem pripade php) ktere mi vraci clanek dle vybraneho id

if (window.ActiveXObject)
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
httpRequest = new XMLHttpRequest();
}

document.getElementById("righttables").innerHTML="<div id='righttables' style='height:162px!important;height /**/:168px;'><span style='text-align:center;font-size:10px;color:green'>probíhá zpracovávání Vašeho požadavku...</span></div>";

httpRequest=GetXmlHttpObject(righttables);

httpRequest.open("GET", url , true);

httpRequest.send(null);

}

function righttables()

{

if (httpRequest.readyState==4 || httpRequest.readyState=="complete")

{

document.getElementById("righttables").innerHTML=httpRequest.respons eText;

}

}

function GetXmlHttpObject(handler)

{

var objXmlHttp=null

if (navigator.userAgent.indexOf("Opera")>=0)

{

objXmlHttp=new XMLHttpRequest();

objXmlHttp.onload=handler;

objXmlHttp.onerror=handler;

return objXmlHttp;

}

if (navigator.userAgent.indexOf("MSIE")>=0)

{

var strName="Msxml2.XMLHTTP";

if (navigator.appVersion.indexOf("MSIE 5.5")>=0)

{

strName="Microsoft.XMLHTTP";

}

try

{

objXmlHttp=new ActiveXObject(strName);

objXmlHttp.onreadystatechange=handler;

return objXmlHttp

}

catch(e)

{

alert("Chyba. Scriptování pro ActiveX může být vypnuto.");

return

}

}

if (navigator.userAgent.indexOf("Mozilla")>=0)

{

objXmlHttp=new XMLHttpRequest();

objXmlHttp.onload=handler;

objXmlHttp.onerror=handler;

return objXmlHttp;

}

}



A zpracovatelský script:


if (isset($_GET['tab']))

{
$sk=$_GET['tab'];
?>
<table cellpadding="3" cellspacing="0">
--- zkráceno, zkrátka zobrazí tabulku podle zvoleného selectu, jsou celkem čtyři
</tbody>
</table>
<?php
}


Před AJAXEM jsem to řešil tak, že jsem hodnoty předával URL metodou GET, což mělo za výhodu to, že jsem podle výběru v tabulce TABULKY upravoval aktuální zobrazení v těch dalších dvou tabulkách.

Stručně řečeno: vybereš si v tabulce TABULKY skupinu a podle skupiny se ti vždy seřadí i ROZPIS a VÝSLEDKY, možno vyzkoušet zde: http://coupe.fball.org/test/

Jde něco podobného i v AJAXU? Mám tím na mysli, jestliže se změní tabulka jedna, tj., vypíše do místa určení hodnoty týkající se proměnné x, uprav podle toho i hodnoty v místě určení y a z???
zero0x
Profil
samozrejme.

mas teda 3 funkcie, kazda spracovava jednu tabulku. Na zaciatku prvej funkcie si iba nastavis aby zavolala aj ostatne dve, ktore by aktualizovali ostatne podla tej prvej. Samozrejme argument prvej funkcie musis nejako spracovat a potom sa rozhodnut, ktoru tabulku natiahnes.
Marenek
Profil *
A můžeš prosím tě naznačit jak by to mělo vypadat obecně, alespon kodově? javascript vůbec neovládám, ale jestli je to hodně podobný php, tak by neměl být problém.:) If a else by pak měla být hračka.

Předpokládám teda, že se to bude týkat funkce:

function vyber(str)
{
var url="send.php?" + str;



if (window.ActiveXObject)

{

httpRequest = new ActiveXObject("Microsoft.XMLHTTP");

}

else

{

httpRequest = new XMLHttpRequest();

}



document.getElementById("righttables").innerHTML="<div id='righttables' style='height:162px!important;height /**/:168px;'><span style='text-align:center;font-size:10px;color:green'>probíhá zpracovávání Vašeho požadavku...</span></div>";
httpRequest=GetXmlHttpObject(righttables);
httpRequest.open("GET", url , true);
httpRequest.send(null);
}

a funkce

function righttables()
{
if (httpRequest.readyState==4 || httpRequest.readyState=="complete")
{
document.getElementById("righttables").innerHTML=httpRequest.respons eText;
}
}

udělám si teda ještě dvě funkce:

function righttables2() (pro Rozpis)
{
if (httpRequest.readyState==4 || httpRequest.readyState=="complete")
{
document.getElementById("righttables2").innerHTML=httpRequest.respon s eText;
}
}


function righttables3() (Pro výsledky)
{
if (httpRequest.readyState==4 || httpRequest.readyState=="complete")
{
document.getElementById("righttables3").innerHTML=httpRequest.respon s eText;
}
}

(( teď mě napadlo, jak do volání funkce function vyber(str) přidám ještě proměnnou righttables, abych ji nemusel pokaždý vypisovat ručně, něco jako v php --> function vyber(str, $righttables), v tom selectu to potom bude vypadat jak???, <select ... onchange="vyber(this.value, kdetadyvlozimtupromennou$righttablessemasitezko)"><option ... ))

A teď, kde tedy mrskám ty podmínky, že if je změněn div righttables, bude podle toho změněn righttables2 a righttables3?
Marenek
Profil *
Tipuju, že asi někde tady s tím začnu:

var url="send.php?" + str;

If str obsahuje $tab
{
pak vykonám něco i s tabulkama r..t2 a r..t3
}

Ale jak třeba vyspecifikuju str do proměnné $str a co konkrétně obsahuje, to je pro mě v javascriptu záhadou.:)
zero0x
Profil
btw ten kod si odniekial skopiroval vsak? lebo ked nevies javascript tak to by si asi nenapisal.

tento kod sa mi nepaci, je prilis komplikovany na cloveka, ktory nevie robit s JS.

skus si pozriet toto, je to ovela lepsie ako ten tvoj kod - je to pripravena kniznica: http://zerox.co.nr/blog/?p=10
Marenek
Profil *
jj, okopčil jsem to od uživatele Vinnetou, někde to tady uváděl, plus upravil podle Citrona. Díky za odkaz.:)
Marenek
Profil *
No jo, ale to neřeší tu moji věc, ta tvoje knižnica je dobrá, ale řeší v podstatě to samé co mám já, akorát že je to třikrát delší na řádky.:)
Marenek
Profil *
A ještě dotaz, existuje nějaká funkce, která testuje na všech prohlížečích, jestli je javascript vypnutý?

if
{
je javascript vypnutý, nabídni alternativní zobrazení
}
else
{
nabídni javascriptovou aplikaci
}
zero0x
Profil

No jo, ale to neřeší tu moji věc, ta tvoje knižnica je dobrá, ale řeší v podstatě to samé co mám já, akorát že je to třikrát delší na řádky.:)


ale s touto kniznicou mas istotu ze si neurobil chybu v kode.

***

samozrejme, kod, ktory sa zobrazi pri vypnutom JS das iba medzi znacky <noscript>...</noscript>
Marenek
Profil *
Aha, díky.
PetrPan
Profil *
samozrejme, kod, ktory sa zobrazi pri vypnutom JS das iba medzi znacky <noscript>...</noscript>

Pokud se nemylim tak noscript v Internet Exploreru nefunguje
Timy
Profil
PetrPan
Funguje.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0