Tervehdys taas,
Olen koettanut opetella AJAXia ja nyt tuli funktioita tehdessä vastaan probleemi.
// funktio, jolla varsinainen kutsu on tarkoitus tehdä Omakutsu(funktio) { ... req.onreadystatechange=funktio; ... } // funktio, jolla käsitellään vastaus, jos sattui osumaan function Kutsu_funktioon() { if(req..readyState == 4) { alert(req.responseText); } } // main-osasta kutsuttava javascript-funkitio, josta tuota AJAX rajapintaa käytetään ... Omakutsu('Kutsu_funktioon') ...
Toivottavasti osasin selittää, mitä olen hakemassa?
Vaikka tämä ei vastaakaan ongelmaasi, kannattaa omat AJAX-hössökät unohtaa ja käyttää valmista kirjastoa. Itse olen käyttänyt jQueryä.
Frozenball kirjoitti:
Vaikka tämä ei vastaakaan ongelmaasi, kannattaa omat AJAX-hössökät unohtaa ja käyttää valmista kirjastoa. Itse olen käyttänyt jQueryä.
Pyh. Itse suosin ainakin oma tekemää koodia, sillä silloin ainakin oppii parhaiten.
En tajunnut alkuperäistä ongelmaa.
Punppis on oikeessa - hyvä oppia....
Yritän siis välittää parametrina funktiona, jota käytetään onreadystatechange paluuarvon käsittelyssä. Omakutsu-funktion kutsussa parametrina kuljetetaan sen funktion nimi, mitä halutaan käyttää tässä tapauksessa. Tuo onreadystatechange ei vaan suostu ottamaan vastaan parametrina tullut funktiota.
Lähinnä tulisi mieleen seuraavat korjaukset:
Omakutsu('Kutsu_funktioon') -> Omakutsu(Kutsu_funktioon)
TAI
req.onreadystatechange=funktio -> req.onreadystatechange=eval(funktio)
Lisäksi:
if(req..readyState == 4) { -> if(req.readyState == 4) {
Grez: Kiitos!
Tuo hipsujen poisto ratkaisi koko tilanteen. Tarvitsi siis välittää funktion osoite ei itse funktion nimeä. Varmaankin parempi tapa, kuin eval()?
Tarkkanan olet oluut lukiessasi, kun huomasit tuon ylimääräisen pisteen (copy/paste-virhe penkin ja näppiksen välissä)!
Jos haluaa todellakin oppia niin silloin copy-paste tyyli ei ole varmaan se paras mahdollinen, vaan kannattaisi silloin itse kirjoittaa alusta loppuun asiat. Vaikka mallia katsoisikin jostain.
Juu tää oli copy/paste omasta ja itse kirjoitetusta koodista - kerrankin oikeassa :-)
Minua ei myöskään kiinnosta valmiiden kirjastojen käyttö yhtään sen enempää kuin pakko, kaikki minkä osaan ja pystyn teen itse. Se on sitten eri asia työelämässä kun pitää olla tuottava ja on käytettävä mahdollisimman paljon valmiita kirjastoja ja koodia jotta saataisiin nopeasti tulosta aikaiseksi. Mutta jos itse meinaa oppia koodaamaan niin koodattava siinä silloin onkin.
Ei sillä, etteikö siitä aina jotain hyötyä olisi jos osaa koodata aina kaiken alusta loppuun ruohonjuuri tasolla. Mutta mitä varten opettelet, jos et työelämää tai omia projekteja varten? Omissa projekteissa ja työelämässä kuitenkin on parempi käyttää niitä valmiita kirjastoja, joilla koodaaminen sujuu helpommin, nopeammin ja koodin luettavuuskin on ihan eri luokkaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.