Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS + Ajax

mol [10.12.2011 23:36:38]

#

Hei,

saisinko apua.

Sivustollani on lomake, joka lähetetään AjaxRequestin POSTilla kasitteleformi.php:hen.

Tämä kasitteleformi.php käsittelee lomakkeen dataa, ja mm. tulostaa sen ruudulle ns. reaaliaikaisesti, ilman että koko sivustoa ladataan uudestaan. Se saadaan suoraan tulostamalla php-koodilla.

Haluan käyttää tässä kasitteleformi.php:ssa javascript-funktioita, mutta ne eivät tunnu toimivan.

Jos kirjoitan siis:

echo '<script type="text/javascript">alert("MOI");</script>';

niin mitään ei tule. Jos laitan

echo '<button onclick="alert(\'Moi\');" >alert</button>';

niin johan pelittää klikkaamalla. Mitenköhän saisin js-koodin automaattisesti tekemään hommat ilman paineluita?

Jossain mainittiin, että tee funktiosi (jos käytän jotain muuta kuin alerttia) muotoon

function alert2(){
  window.onload = function() {
    alert("Moi");
    return false;
   }
}

mutta en saanut tätäkään toimimaan.

Firebug ei suostunut Script-osiossa näyttämään näitä kumpaakaan koodia; html-osiossa se näyttää ne. Selaimen View Source ei taas tykkää näyttää tätä dynaamista "Ajax:lla generoitua" tavaraa ollenkaan.

Olisiko jollain antaa jotain vinkkiä?


Kiitos.

Grez [10.12.2011 23:41:34]

#

Jos palautat sen javascript -koodin ilman noita <script ..> tageja ja sanot siellä ajaxin käsittelyssä eval -funktiota, eli eval(saatuvastaus).

Vaikka tuon saa tehtyä, niin todennäköisesti tavoittelemasi toiminnallisuuden toteuttamiseen on parempia vaihtoehtoja. Jos kyseessä on vaan testailu, niin tällähän ei tietenkään ole mitään väliä.

Metabolix [10.12.2011 23:49:59]

#

Jos ja kun toivottavasti käytät jotain kirjastoa etkä säädä AJAXilla käsin, käytössäsi varmaan on valmis funktio tähän. Prototypen Element.update ajaa HTML:n seassa olevat skriptit, samoin näyttäisi tekevän jQuery.html.

mol [12.12.2011 18:17:38]

#

Kiitos, taas.

Alkuperäinen ajatus oli 1+1 klikkauksen lomakkeen talletus: ensin kerran, jolloin se "esinäyttää" ja tulostaa "tallenna"-napin. Esikatselu vaati vielä tätä reaaliaiskasta javascript-funktioiden ajoa, mikä ei pelittänyt.

Grez:n ajatuksia seuraillen muutin toiminnallisuuden suoraan 2 napin versioon: "esikatselu" ja "tallenna". Toimii, koodi yksinkertaistuu paljon, eikä käytettävyys juuri muutu. Ainakaan pahempaan suuntaan.

Mutta, ehkä kannattaisi opetella jQuerya, kuten alempi mainitsi. Jotenkin puhdas js tuottaa eriskummallisia ongelmia, joihin moniin viitataan jQueryllä.

jQuery tuntuu olevan jonkun sortin de facto -standardi.

Metabolix [12.12.2011 22:51:20]

#

Ei "puhdas JS" tuota juurikaan eriskummallisia ongelmia (ainakaan tässä keskustelussa kuvattua). Mutta kuten lähes kaikissa kielissä ja kirjastoissa, kielellä voi tehdä paljon asioita, joista osa on hankalia, ja kirjaston tarkoitus on tehdä tärkeimmistä asioista vähän helpompia. AJAX ja DOM-puun käsittely nyt sattuvat olemaan tavallisesti sieltä vaikeammasta päästä, jolloin hyvän kirjaston merkitys on suurempi.

JS:ää lisäksi sotkee se, että eri selaimissa (erityisesti vanhemmissa IE-versioissa) on erilaisia puutteita ja poikkeamia standardeista. Silloin "puhdas JS" ehkä aiheuttaa eriskummallisia ongelmia, mutta vika ei ole kielessä vaan viallisissa selaimissa. Näitä eroja sitten kirjastot yrittävät piilottaa.

Grez [12.12.2011 23:14:56]

#

Jep, jotkut asiat saa tehtyä helpommin esim. jQueryllä, mutta tärkeintä on varmaankin se, että tietyt perusjutut onnistuu selaimesta riippumatta helposti.

Varsinkin Firefox tuntuu nykyisin aiheuttavan paljon harmaita hiuksia. Viimeksi tänään törmäsin jQueryssä ominaisuuteen, joka toimi kaikkialla muualla paitsi Firefoxissa. Tosin sekin ollaan ilmeisesti korjaamassa myöhempään jQueryn versioon.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta