Autor Zpráva
Mirek123
Profil *
Nazdar lidi, mam problem se spuštením funkce po načtení ajaxu, viz. kod.

INDEX.php
function ajax(stranka, kam)
{

    var httpRequest;
    
    if(typeof window.ActiveXObject != 'undefined')
    {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else
    {  
        httpRequest = new XMLHttpRequest();
    }
    httpRequest.open("GET", stranka, true);
    httpRequest.onreadystatechange= function () 
    {
        processRequest(httpRequest, kam) 
    };
    httpRequest.send(null);
}


function processRequest(httpRequest, kam) 
{
    if (httpRequest.readyState == 4)
    {
        if(httpRequest.status == 200)
        {
            if (typeof kam == 'string') 
            {
                document.getElementById(kam).innerHTML = httpRequest.responseText;
            }
            if (typeof kam == 'function') 
            {
                kam(httpRequest.responseText);
            }
        }
        else
        {
            alert("Chyba pri nacitani stanky " + httpRequest.status +" : "+ httpRequest.statusText);
        }
    }
    else
    {
        if (typeof kam == 'string' && kam != '') 
        {
            document.getElementById(kam).innerHTML = '?ekejte...';
        }
    }
       
} 

<a onclick="ajax('page.php','page')">Klikni</a>
<div id="page"></div>



PAGE.php
<?

$sql = "SELECT * FROM hodnoty ORDER BY id;";
$hodnota = MySQL_DB_Query(SQL_USERNAME, $sql);
	
	while($zaznam = MySQL_Fetch_Array($vysledek)):
	    $text = $hodnota[text];
	    $div = $hodnota[div];
	    echo"<script> zmena('$text','$div');</script>";
	endwhile; 
?>



a ja potřebuju vyvolat funkci zmena() aby mi zemnila text ($text) v divu ($div).. když nepoužiju ajax a dam to třeba takle
<a onclick="zmena('text','div');">Zmena</a>


tak to funguje ale ja potřebuju aby se funkce spustil po načtení automaticky, jakože načtu stránku pomoci ajaxu a tam když budu mit kod

<script> zmena('$text','$div');</script>


tak že se vyvolá, ale nevyvolá.. funkce vypadá takto

function zmena(text,div) { 
document.getElementById(div).innerHTML = text;
}


a takle mi nejde spustit žádna funkce, dělám něco špatně protože i když dam alert() na tu stránku která se má načist, tak se nespustí, má byt nějaky odkaz pro ten alert at se vyvolá pro tu hlavni nebo ja už nevim.. Prosím o radu.
Kcko
Profil
Bud si ten kod dej pod to, nebo do onloadu nebo pouzivej nejaky framework, napr. jQuery a pak staci

$(function(){
  // kod se vykona po nacteni stranky

})
Mirek123
Profil *
Kcko:
nefunguje ani jedna možnost, skoušel jsem udělal ukázku jestli neni někde chyba ve stránce..

INDEX
<html>

	<head>
	<script src="jquery-pack.js"></script>

<script>

function nacist(url,typ) {

     if (url != 0)
     {
        if (window.ActiveXObject)
        {
          httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
          httpRequest = new XMLHttpRequest();
        }
        httpRequest.open("GET", url, true);
        httpRequest.onreadystatechange= function () {processRequest(typ); } ;
        httpRequest.send(null);
	httpRequest.Header("Content-Type", "application/x-www-form-urlencoded");
      }
      else
      {
        document.getElementById(typ).innerHTML = "";
      }
}

function processRequest(typ)
{
      document.getElementById(typ).innerHTML = httpRequest.responseText;
}

</script>

	</head>
	<body>


<a onclick="nacist('uvod.html','div')">Klik</a>
<div id="div"></div>

	</body>
</html>


UVOD

<html>
	<head>
	<script src="jquery-pack.js"></script>

	</head>

	<body>

	ss
	
	<script>
	$(function(){
	  alert("ahoj");
	})
	</script>

	</body>
</html>


zobrazí to ss, ale alert to nevypíše, vpodstatě to nespustí žádny javascript vtom, skoušel jsem to dát i do onload, nebo na konec a bez úspěchu
Kcko
Profil
Ale funguje => http://jquery.jslab.net/zkousecka/#d3d32a7fcc71e1a1ee783714da7e4bed
Mirek123
Profil *
Kcko:
jo samostatně to funguje, to všechno, ale načtený obsah ajaxem kde je javascript s nespusti
šak mam ukázku, když načtu v index.html obsah uvod.html tak se mi alert který je v uvod.html nespustí, a to právě potřebuji.
Kcko
Profil
Hele ty "ajaxovy" requesty jsou prasacky a takhle se to dneska nepise. Urcite mi bude oponovat Chamurappi, nicmene chces to psat v dnesnich trendech ne?

Takze to cele napis v jQuery.

Napis im polopate jak pro maly dite ceho chces dosahnout a ja Ti funkcni ukazku napisu. Mam cas cca do 23h.
Mirek123
Profil *
Kcko:
Udělal jsem si po kliknutí na odkaz rolovací div (viceméně neco podobného jako rolovaci menu, neco jak je třeba na facebooku tet když je pošta). Mno a pří to kliknutí se načte do toho divu jiná stránka, kde je php kod který se napojuje na databázi a ukládá do proměných čas (datetime) kdy byla odesláná zprává. A pomocí toho času v proměné potřebuji spustit java funkci která spustí časovač a ten bude bežet v tom rolovacím divu.
Už nevim jak lépe bych to vysvětlil.
Kcko
Profil
Zjednodusseny priklad, alert funguje http://examples.rjwebdesign.net/jquery/20100425-ajax-load/
_es
Profil
Mirek123:
Načo chceš spúšťať elementy script načítané cez ajax? Tie sa nespúšťajú.
Pošli si dáta v nejakom vhodnom tvare a až podľa tých prijatých dát spúšťaj nejaké už vopred definované funkcie.

Kcko:
Hele ty "ajaxovy" requesty jsou prasacky a takhle se to dneska nepise. Urcite mi bude oponovat Chamurappi, nicmene chces to psat v dnesnich trendech ne?
Takze to cele napis v jQuery.
Celé jQuery je len definovanie jednej funkcie a tak sa to aj "píše" v kóde.
Na každú drobnosť hneď naťahovať rozsiahlu knižnicu JavaScriptu?
Mirek123
Profil *
ok, funguje to, děkuji moc:) jsem myslel že to zvládne i obyčejná funkce ajax
Kcko
Profil
Mirek123:
A na koho nyni reagujes?

_es:
O tom se dohadovat ani nechci snad. Jen kratce, s jQuery se mi pracuje dobre (JS nijak zazracne neumim, rozhodne ne jako ty ci Chamurappi a nemusim tudis vsechno psat polopaticky. Sahnu si do dokumentace pro vhodnou nebo nekolik vhodnych funkci, ktere jsou vyzkouseny, odladeny, funkcni ke kterym existuje spoustu ukazek a prikladu a udelam si co potrebuji.

Argument na co tahat do stranek rozsahlou knihovnu mi prijde uz trosku zbytecny, kor v dnesnim svete rychleho internetu.
Knihovna co ma nejakych 50kB/s je snad zanedbatelnym soustem zvlast pote co si ji prohlizec ulozi do kese ne?

Ty a Chamurappi si napisete

document.getElementById("#prvek") nebo nakou vlastni funkci ve ktere je toto, ja si radeji napisu $("#prvek") stejne jako X dalsich co objevuji kouzlo jednoduchosti a krasy pomoci jQuery (Nevim jak snadno bych chtel nahradit funkce typu show(1000), slideUp, fadeTo ..atp.)

Hadat se nebudu a dalsi prispevky sem kolem toho psat nebudu.

Kazdy necht si pise jak je mu libo, autorovi jsem poradil co me se zdalo nejjednodussi a nyni je on spokojen a ja taky.

Ave.
Mirek123
Profil *
Kcko:
na tebe, ta JQuery funkce
$("#page").load("page.php");

funguje tak jak potřebuju:)
Kcko
Profil
Mirek123:
Zlate jQuery bez tech osklivych XMLhttp requestu vid :-)
_es
Profil
Kcko:
Jen kratce, s jQuery se mi pracuje dobre (JS nijak zazracne neumim, rozhodne ne jako ty ci Chamurappi a nemusim tudis vsechno psat polopaticky.

"Písať" musíš v rovnakej syntaxi JavaScriptu, jQuery len definuje jednu funkciu s názvom $, v ktorej je to všetko schované.
jQuery je užitočné, no nie za každú cenu - na jednu drobnosť a presviedčať k tomu niekoho argumentami, že je taký trend a podobnú demagógiu sa mi už vôbec nezdá.

Zlate jQuery bez tech osklivych XMLhttp requestu vid :-)
A ako si myslíš, že to tá metóda load asi tak nahrá?
Kcko
Profil
_es:
Ja nikoho nepresvedcuji, myslim, ze jsem zcela jasne napsal, ze kazdy necht si pise jak je mu libo.

Jinak samozrejme, ze se pouzivaji requesty, ale myslel jsem to opet tak ze ty proste pouzijes jednodusse nejakou funkci a nestaras se o to co dela v pozadi viz ten priserny kod v prvnim prispevku.

Samozrejme, dalsi argument je ten ze si vytvoris vlastni balik funkci a taky si je nalinkujes atd atd atd. ALE PROC?

Protoze jQuery a lidi kolem toho atd atd atd.

Nebavi me to :-) jdu se divat na film.

PS. Kazdemu co jest libo ...
Chamurappi
Profil
Reaguji na Kcka:
Knihovna co ma nejakych 50kB/s je snad zanedbatelnym soustem zvlast pote co si ji prohlizec ulozi do kese ne?
Ta knihovna se musí s každým načtením interpretovat. Je to neefektivní.

document.getElementById("#prvek") nebo nakou vlastni funkci ve ktere je toto, ja si radeji napisu $("#prvek")
Používám vlastní funkci, která je jen zkratkou pro document.getElementById, nikoliv (falešnou) hrou na (pomalé) selektory.

Nevim jak snadno bych chtel nahradit funkce typu show(1000), slideUp, fadeTo ..atp.
Vzhled patří do CSS, stejně jako kodér by ani skript neměl sahat na atribut style.

si vytvoris vlastni balik funkci a taky si je nalinkujes atd atd atd. ALE PROC?
Protože drtivou většinu toho, co dělá jQuery, zpravidla nepotřebuji a to, že ho nadšeně používá celý zbytek světa, na tom těžko něco změní. Framework ti umožňuje užívat horší postupy snazším způsobem. Samozřejmě, že důležitý je výsledek, a kdo chce, může mé rýpání vesele ignorovat.

Ja nikoho nepresvedcuji
Hodláš podobným způsobem protlačovat framework u každé drobnosti, na kterou se zde někdo zeptá? Ono totiž úplně všechno jde řešit přes jQuery

e.preventDefault();
Prosté return false nevyhovuje?


Reaguji na Mirka123:
Navrhni aplikaci tak, abys nepotřeboval interpretovat AJAXem natažený <script>. Prohlížeče <script>y v innerHTML nativně neinterpretují, což znamená, že je lze spustit jediným způsobem — a tím je eval (či nějaká jeho obdoba). I autor postupu použitého v jQuery říká „it's always a bad practice“.
Kcko
Profil
Hodláš podobným způsobem protlačovat framework u každé drobnosti, na kterou se zde někdo zeptá?
Hodlam, stejne jako ty delas pravy opak. V tomto konkretnim pripade jsme velmi rychle vyresili jeho problem. Nevsiml sem si, ze by odpoved uzivatele _es ci tvoje nejak vyrazne pomohla.

Prosté return false nevyhovuje?
Neni to in, jdu s dobou, pouzivam to co pouzivaji chytri lide, ktery vymysli veci, ktere ja pote uzivam.

Posledni odstavec sis mohl odpoustit, zda se Ti, ze uziti evalu je vhodne pro cloveka (promin Mirek123), ktery nedokazal slozit ani takto jednoduchou vec?

Framework ti umožňuje užívat horší postupy snazším způsobem. Samozřejmě, že důležitý je výsledek, a kdo chce, může mé rýpání vesele ignorovat.
Ignoruji, vysledek a casovost je to nejdulezitejsi pro mne a pro klienta.

Jeste neco ? :-)
Chamurappi
Profil
Reaguji na Kcka:
zda se Ti, ze uziti evalu je vhodne pro cloveka (promin Mirek123), ktery nedokazal slozit ani takto jednoduchou vec?
Ne. Mně se právě užití evalu vhodné nikdy nezdá, proto mu píšu, ať to udělá jinak — bez potřeby evalu. Je mi jedno, jestli je natvrdlý, nebo naměklý…
Tohle mimochodem není zrovna jednoduchá věc. Kdybych někdy musel pracovat s blbě navrženou serverovou aplikací, použil bych zřejmě jQuery a přesně tak, jak jsi mu ukázal.

Hodlam, stejne jako ty delas pravy opak.
Prosazuji snadná a technicky čistá řešení a jsem ochoten je hájit klidně i místo koukání na film.
Příspěvek [#2] bych ti včera smazal, kdybych tu byl, poněvadž byl naprosto mimo mísu. Standardní petovina — přečteš si nadpis dotazu a vychrlíš nějaký zdánlivě související pokus o odpověď.

Neni to in, jdu s dobou, pouzivam to co pouzivaji chytri lide
Piš prosím s diakritikou a interpunkcí, porušuješ závazná pravidla a jsi s tím už totálně out.
Smím vědět, kdy vyšly returny z módy?
Kcko
Profil
Chamurappi:
Neprirovnanej me k Petru Mlichovi, urazi me to. Projdi si moji historii a zamer se kolika lidem jsem na foru pomohl.

Nebudu psat s diakritikou, otravuje me to.

Pokud mi budes prispevky mazat, budu si na Tebe stezovat, nebo bych pote rad videl, jak mazes vsem uzivatelum prispevky bez diakritiky = Mer stejnym metrem.

PS. Debaty s Tebou jsou v podstate "petoviny" ... spis nez na foru by ses vyzil jako prislusnik divize SS za dob minulych.
Chamurappi
Profil
Reaguji na Kcka:
Projdi si moji historii a zamer se kolika lidem jsem na foru pomohl.
Tvé zásluhy jsou zřejmé. Předpokládám, že jsi těm kódům, se kterými jsi pomáhal, rozuměl a že jsi bral v úvahu technicky více relevantní faktory než je móda a délka zápisu.

Pokud mi budes prispevky mazat, budu si na Tebe stezovat
Jako Mlich, ten si na mě stěžoval zatím šestkrát :-)
Příspěvky mažu, pokud je považuji za škodlivé, zbytečné, či příliš konfliktní. Nepřítomnost diakritiky není zásadní důvod.

Klidně si můžeme povídat na jednom místě o kladech a záporech jQuery, ale ty opakovaně tvrdíš, že to probírat nechceš, a pak rozjíždíš stejnou obecnou debatu znovu a znovu v dalších vláknech.
Kcko
Profil
Chamurappi:
Klidně si můžeme povídat na jednom místě o kladech a záporech jQuery, ale ty opakovaně tvrdíš, že to probírat nechceš, a pak rozjíždíš stejnou obecnou debatu znovu a znovu v dalších vláknech.
Nechci, nic sem ani nerozjizdel. Zakladateli topicu jsem nastinil reseni, pote jsem mu jej napsal a tim to pro me skoncilo. A jelikoz tu jsou lidi vysazeni na jQuery a podobne frameworky doslo tu opet k offtopicu, ktery jsem JA nezacal.


PS. Ted uz pro me toto vlakno skutecne konci.
PS2. Povidat si muzeme, ale myslim, ze ani ty ani ja nazor nezmenime. Takze pro priste navrhuji, aby tys prispechal se svoji troskou do mlyna a ukazal reseni problemu v "neframeworku" a ja to zkusim opacne, uzivatel si vybere a nikdo nebude nikoho osocovat.


Hezky vecer :-) , jdu pomahat do PHP kategorie.
Gonzalesl
Profil *
Chamurappi:

Reaguji na Kcka:
„Knihovna co ma nejakych 50kB/s je snad zanedbatelnym soustem zvlast pote co si ji prohlizec ulozi do kese ne?“
Ta knihovna se musí s každým načtením interpretovat. Je to neefektivní.
**
Knihovna má v Gzipu cca 15 Kb, počítám, že když si načítáš vlastni funkce či pluginy, kterými beztak opisuješ/kopíruješ efektivitu jQuery, jsi na tom stejně nebo hůře s načítáním :-)

„document.getElementById("#prvek") nebo nakou vlastni funkci ve ktere je toto, ja si radeji napisu $("#prvek")“
Používám vlastní funkci, která je jen zkratkou pro document.getElementById, nikoliv (falešnou) hrou na (pomalé) selektory.
**
Ty "pomalé selektory" bys mohl rozvést, pochybuji, že existuje jakýkoli vnímatelný rozdíl uživatelem mezi načítání selektorů a document.getElementById, kterí stejně akorát zkracuješ;)

„Nevim jak snadno bych chtel nahradit funkce typu show(1000), slideUp, fadeTo ..atp.“
Vzhled patří do CSS, stejně jako kodér by ani skript neměl sahat na atribut style.
**
V těchto efektech nikdo nesahá na klasický CSS, navíc pomocí CSS jich ani nedocílíš (rozhodně ne ve všech majoritních browserech :-) Takže pro efekty, co umí například flash, navrhuješ nevyužívat možnost JS? To je hodně old school dogma...

„si vytvoris vlastni balik funkci a taky si je nalinkujes atd atd atd. ALE PROC?“
Protože drtivou většinu toho, co dělá jQuery, zpravidla nepotřebuji a to, že ho nadšeně používá celý zbytek světa, na tom těžko něco změní. Framework ti umožňuje užívat horší postupy snazším způsobem. Samozřejmě, že důležitý je výsledek, a kdo chce, může mé rýpání vesele ignorovat.
**
Jestli drtivou většinu toho co dělá jQuery nepotřebuješ, tak by mě zajímalo co jsi dělal za weby? Celý svět opravdu nikoho nezajímá, ale abych si psal ručně a složitě v klasickém JS hodiny to, když v jQuery to zvládnu pár řádky a bez problému, tak tuhle logiku mi hlava nebere. Pokud samozřejmě děláš web, kde jsou JS minoritní a jednoduché (tisk, schování - block, none apod.), potom bych pochopil, že to nemá smysl...

„e.preventDefault();“
Prosté return false nevyhovuje?
**
Nevím jak moc si na tom s JS, neznám tě, ale jednoduchý příklad rozdílu (viz odpověď Johna Resiga (ten by ti mohl něco říkat ne?:-))

http://stackoverflow.com/questions/1357118/javascript-event-preventdefault-vs-return-false

Peace ;)
Chamurappi
Profil
Reaguji na Gonzalesla:
pochybuji, že existuje jakýkoli vnímatelný rozdíl uživatelem mezi načítání selektorů a document.getElementById
Při třech tisících elementů na náročnější stránce existuje v některých prohlížečích znatelný rozdíl mezi hledáním elementu podle ID a hledáním podle (jiných) atributů. Mezi document.getElementById("prvek") a $("#prvek") bude skutečně rozdíl zanedbatelný. Snažím se nevyhledávat elementy podle jiných vlastností, než je ID, proto nepotřebuji hru na selektory.

V těchto efektech nikdo nesahá na klasický CSS
Právě o tom mluvím. Efekty pracují s atributem style a soustředí se na vizuální prezentaci.

Takže pro efekty, co umí například flash, navrhuješ nevyužívat možnost JS?
Jistěže ne. Navrhuji nesahat na style a vnímat stránku jako obecnou datovou strukturu, u níž chci dynamicky měnit vlastnosti určené k obecnému ovlivnění prezentace, nikoliv k ovlivnění vzhledu. Taková koncepce je o generaci napřed, ne pozadu. K dokonalosti jí chybí už jen parametrické třídy.

tak by mě zajímalo co jsi dělal za weby?
Třeba tuto diskusi. Shluk mnoha malých užitečných funkcí, sice bez hezkých animací, ale i bez zdržování. Mimochodem, odkaz „Citovat“ ti nefunguje?
Krom skriptů na tomto webu jsem dělal všechno možné, všelijaká šoupátka, chaty, administrační rozhraní, inzertní systémy, grafy, mapy, WYSIWYG editory… někdy s jQuery, někdy bez.

jednoduchý příklad rozdílu (viz odpověď Johna Resiga (ten by ti mohl něco říkat ne?:-))
Celebrity nesleduji. Přiznávám, že jsem rozdíl neznal, děkuji za vysvětlení.

Nevím jak moc si na tom s JS
Tento rozdíl vytváří až jQuery, při klasickém zpracování událostí nezastaví return false probublávání.

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: