Hei, tilanne on tämä. Ylläpitäjä on lomakkeella ja klikkaa lähetä -painiketta. Onko uudelleen ohjaus järkevin tehdä aina uudelle sivulle ja onko ihan ok näyttää aina sama viesti esim. "OK!" ja sitten takaisin linkki...
Mitä mieltä olette JavaScriptin käytöstä mielummin. Nyt tarkoitus käydä kaikki työvuorovaraus ohjelman lomakkeet läpi ja ohjata käyttäjä samalle sivulle, jossa sama teksti.. toisaalta vaikea sanoa minne takaisin linkki ohjaa.. Eli tällainen looginen ongelma/ kysymys, miten te teette uudelleen ohjauksen? Tuskin jokaiselle uudelleen ohjaukselle tehdään omaa sivua, jossa uniikit viesti ja takaisin linkit.
JavaScriptiä saa ja pitää käyttää. Sen lisäksi olisi hyvä olla jokin fallback, minkä avulla toiminnot toteutetaan, jos javaScript ei ole käytössä. Tämä ajax+fallback -toiminto tietenkin vaatii ohjelmoijalta hieman tietämystä, miten estetään lomakkeen lähettämisessä käyttäjän siirtäminen sivulla, yms. mutta se selviää pienellä googletuksella.
Nykyään itse käytän ajaxia melkeinpä kaikissa pienemmissä lomakkeissa, jolloin mitään uudelleenohjausta ei tarvita (ja lomakkeen saa aukeamaan vaikka lightboxiin).
Myös erilliset ok-sivut ovat suurimmilti osin täysin turhia, kun sen "ok"-ilmoituksen voi lisätä myös "sivulle", josta käyttäjä alunperinkin lomakkeeseen pääsi (esim. työvuorolistaus, josta muokattava työvuoro valittiin).
Eli kannattaa suosiolla unohtaa heti alkuun kaikki html-päätteiset sivut, jos teet php-skriptejä. On paljon helpompaa ohjata "yhdelle" php-sivulle, kun sille on niin helppo tehdä yhdellä if-lauseella (ja myöhemmin voit kehittää oman ilmoitus-luokan) tarkistus, onko käyttäjän lähettämät tiedot tallennettu onnistuneesti.
Tosiaan, jos aiot tehdä enemmänkin webijuttuja, niin kannattaa pyöriä siellä kuuluisassa internetissä, jossa kaikilla nykyaikaisilla sivuilla on tämmöisiä juttuja jo käytössä.
edit:
En siis ole työvuorolistaasi nähnyt (enkä halua nähdä), mutta taikasanoina ja ideoita hakusanoilla
- jQuery ajax form
- jQuery modal notification
- jQuery inline edit
Itse en käytä mitään "jes, onnistuit" -sivuja. Lomakkeen tallennuksen jälkeen joko ohjaan listaussivulle tai takaisin samalle lomakkeelle, miten milloinkin hyvältä tuntuu. Viestit rendataan sitten sille sivulle, mille lopulta laskeuduttiin. Sillä ei ole niin väliä, koska viestien näyttöä ei ole kovakoodattu jollekin tietylle sivulle vaan leiskaan, joten ne tulevat aina näkyviin siellä minne käyttäjä on ohjattu.
Mitä jos tekee näin:
1. Käyttäjä klikkaa lomakkeen lähetä -painiketta
2. Tarkistetaan että lähetä painiketta klikattiin
3. Tallennetaan tapahtuma
4. Lomakkeessa action=' '
5. Nyt käyttäjä pysyy koko ajan samalla sivulla
6. echo "tallennettu";
7. return
Eli ei mitään uudelleenohjausta. Ei JavaScriptiä.. tämä on nykyinen tapani ja se toimii. Mutta IE 10 kohdalla ei .. muut selaimet kyllä.
Ei ei ei ei, juuri nimenomaan ei noin!
Actioniin se urli, jossa formin lähetys käsitellään (eli vaikka sama sivu kuin itse formi), jossa piilokenttänä vaikkapa tieto, että lomake on varmasti lähtenyt.
Jos lomakkeen tiedot on ollut hyväksyttävät, niin ohjataan sun työvuorolistaan, muussa tapauksessa takaisin formiin, jossa asiaankuuluva virheilmoitus.
Eli vaikka sama sivu niin kirjoitetaan action kohtaan sivun url. Miksi tuollaisia tyhjiä actioneita on sitten oppaissa... Tämä nykyinen tapa toimii, vaikka se on täysin väärä? En tajua logiikkaa.. Eikö tuo lähetä painikkeen klikkauksen tarkistus ole mistään kotoisin, kiitän.
latenleffahylly kirjoitti:
tämä on nykyinen tapani ja se toimii. Mutta IE 10 kohdalla ei .. muut selaimet kyllä.
latenleffahylly kirjoitti:
Tämä nykyinen tapa toimii, vaikka se on täysin väärä?
Tervetuloa webikehittäjien maailmaan!
latenleffahylly kirjoitti:
Miksi tuollaisia tyhjiä actioneita on sitten oppaissa... Tämä nykyinen tapa toimii, vaikka se on täysin väärä? En tajua logiikkaa..
Tyhjä action on toimiva silloin, kun sulla on lomakkeen käsittely samassa tiedostossa lomakkeen kanssa.
Yksi vaihtoehto on heittää lomakkeen käsittely omaan tiedostoon, ja ko. tiedosto action-kenttään. Jos javascript on päällä, lähetetään esim. jQuery post:n avulla lomakkeen tiedot tuolle lomakkeen käsitteliälle. Jos sattuu jokin virhe, esim. virheellistä dataa, tai käsittelyn onnistuessa, tulostetaan viesti tiedostossa vaikka echo:lla. Kaikki mikä tulostetaan tulee post-metodin paluupostina, ja se voidaan sitten tulostaa vaikka lightboxiin. Jos taas javascript ei ole päällä, toimii lomake edelleen.
Näin ollen sun ei tarvi siirtää käyttäjää mihinkään sivulta, ja saat tarvittavat ilmoituksetkin. Tuon lomakkeen välittävän javascript kikkareen kun teet järkevästi, voit käyttää sitä missä tahansa lomakkeessa.
Minun on vaikea edes nähdä mitään ongelmaa "tyhjässä" actionissa.
Siis esimerkiksi sivulla https://www.saittiesimerkki.com:37291/sovellus/
"https://www.saittiesimerkki.com:37291/sovellus/
"//www.saittiesimerkki.com:37291/sovellus/
"/sovellus/hakemisto/sivu/382"
"../../hakemisto/sivu/382"
"../sivu/382"
"382"
""
Eli ihan normaalia suhteellinen uri tai "ei ole pakko toistaa jos ei muutu" juttua.
Lomakkeen käsittely samassa tiedostossa on aloittelijalle tie helvettiin – varsinkin latenleffahyllyn kaltaiselle aloittelijalle, joka ei tajua koodistaan juuri mitään. Siinä näyttää usein menevän sekaisin, mikä koodi ajetaan milläkin sivunlatauksella ja miten uudelleenohjaukset toimivat. Selvintä on tehdä eri osoitteeseen täysin erillinen sivu, joka pelkästään käsittelee lomakkeen ja ohjaa käyttäjän takaisin eikä tulosta mitään (paitsi virhetilanteessa virheilmoituksen). Yhdellä sivulla voi kikkailla sitten, kun varmasti ymmärtää, miten se toimii.
dartvaneri kirjoitti:
latenleffahylly kirjoitti:
Miksi tuollaisia tyhjiä actioneita on sitten oppaissa... Tämä nykyinen tapa toimii, vaikka se on täysin väärä? En tajua logiikkaa..
Tyhjä action on toimiva silloin, kun sulla on lomakkeen käsittely samassa tiedostossa lomakkeen kanssa.
Html5:ssä action-attribuuttia ei saa jättää tyhjäksi eikä se ole periaatteessa ollut hyvä käytäntö aiemminkaan.
Aloittelijoiden viritelmissä on juuri se ongelma, että koodi on yhtä helvetin sekasotkua, joten lomakkeen käsittely on periaatteessa parempi tehdä jossain muualla - tosin tämän jälkeen tietojen välittäminen takaisin lomakkeelle voi olla pykälää vaikeampaa.
Late yrittää kuitenkin edelleen käyttää sitä WordPressiään, ja vaikka arvelenkin ettei Late ole missään tilanteessa muutenkaan tehnyt asioita kuten WP:ssä kuuluisi tehdä, niin en voi suositella että lähdettäisiin omiaan säätämään.
Jossain vähän modernimmassa systeemissähän lomake submitoidaan samaan urliin kuin mistä lomakkeelle on tultukin, koska suoritus on suht suoraviivaista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.