AJAX Check prilikom pisanja u input

Pozdrav,
znači pravim formu i napravit ću da prilikom upisa u input pomoću ajaxa provjerava dali je polje ispravno. Zanima me dali je bolje napraviti da šalje ajax kad upiše najmanje npr.4 slovo? Ili ako imate kakav prijedlog da ne senda puno requesta (svako slovo = 1 request) slobodno kažite. Hvala!

A zašto ne raditi provjeru na frontendu sa js-om, i onda tek kod submita provjeriš još i sa ajax-om.

a što imam provjerit s jsom, samo veličinu tog texta, dali korisnik postoji u bazi moram s ajaxom

Nakon što je user utipkao recimo 3 znaka, dohvatiš sva zauzeta imena koja počinju na ta tri znaka tako da kasnije, dok korisnik ispuni polje za korisničko ime (recimo 5-6 slova, irelevantno), ti ćeš imati sva imena koja su zauzeta već unaprijed dohvaćena dok je korisnik utipkavao to korisničko ime, tako da odmah mu možeš ispisati je li korisničko ime zauzeto ili ne, bez da korisnik mora čekati.

Također, ako si uspio primijetiti, radi se o jednom requestu.

znači po tvome bi skripta trebala izgledati ovako:

if(string.length == 3)
{
//ajax...
}

ja ne vidim drukčiji način da ‘zaključam’ slanje samo jednog requesta

Tako je. Naravno, ako korisnik dobije poruku da je korisničko ime “korisnik123” zauzeto, on će vjerojatno obrisati sve što je utipkao i početi pisati neko drugo korisničko ime, tako da će ta skripta opet raditi kada korisnik utipka 3 slova i opet ćeš imati željeni rezultat, a samo jedan si request radio (ili više, ovisno koliko puta korisnik “naleti” na zauzeto korisničko ime).

ali čekaj, evo primjer:
Imam u bazi 3 korisnika: test123, test321 i test5
Kad korisnik ukuca “tes” (bez navodnika naravno), šaljem zahtjev za listu svih korisnika koji sadrže to u imenu. Kad ću ja provjeriti da li je ono što je on konačno upisao u toj listi korisnika koji imaju u imenu “tes”?

Dakle - on upiše “tes” i nastavlja pisati, ali čim je upisao “tes” skripta dohvaća korisnike test123, test321 i test5.

Ukoliko korisnik želi korisničko ime test123, odmah nakon što je on utipkao test123 on dobiva poruku da je korisničko ime zauzeto, dakle isti tren - zato jer si ti prethodno, nakon što je on utipkao “tes”, dohvatio sva ta korisnička imena i možeš mu isti tren takvu poruku poslati na ekran jer možeš tako brzo usporediti njegov unos i rezultate koje si dohvatio iz baze podataka, bez da moraš učitavati ponovo rezultate iz baze podataka, jer - i zašto bi, kada si ih učitao sve nakon što si dobio “korijen” njegovog željenog korisničkog imena, odnosno “tes”.

Ali pazi ovo - ukoliko želi korisničko ime test1234, nakon što je utipkao “test123” on će dobiti kako je korisničko ime zauzeto, ali nakon što doda “4” na kraju moraš mu prikazati poruku da je korisničko ime slobodno.

[quote=“toniperic”]
Ali pazi ovo - ukoliko želi korisničko ime test1234, nakon što je utipkao “test123” on će dobiti kako je korisničko ime zauzeto, ali nakon što doda “4” na kraju moraš mu prikazati poruku da je korisničko ime slobodno.[/quote]da to je problem, znači moram svaki put kad piše nešto provjeriti dali je to ime na listi, ne?

Tako je, ali to ti nije problem jer uspoređuješ nešto iz arraya kojeg već imaš učitanog sa unosom korisnika, tako da ne moraš raditi requeste prema bazi podataka svaki puta kada korisnik upiše novi znak u polje.

Ne moraš svaki put kad piše. Izvučeš listu imena i spremiš u array, i onda inputu staviš onblur event. Tada uspoređuješ.

[quote=“toniperic”]Nakon što je user utipkao recimo 3 znaka, dohvatiš sva zauzeta imena koja počinju na ta tri znaka tako da kasnije, dok korisnik ispuni polje za korisničko ime (recimo 5-6 slova, irelevantno), ti ćeš imati sva imena koja su zauzeta već unaprijed dohvaćena dok je korisnik utipkavao to korisničko ime, tako da odmah mu možeš ispisati je li korisničko ime zauzeto ili ne, bez da korisnik mora čekati.

Također, ako si uspio primijetiti, radi se o jednom requestu.[/quote]

hm… imati jedan request od 100kb ili jedan request od par byteova? hm…

recimo da imas neki broj usera… da uzmes sve usere s prva 3 slova… i to ti recimo vrati 100 usernameova…
i imas recimo sav unos, i provjeravas da li postoji taj unos…
sto je manje?

i jedno i drugo rijesenje imaju 1 request… prvo rijesenje ti kroz request vraca 100 usernameova, 2. rijesenje ti vraca bool… hm

mislim, tako komotno mozes odmah uzet sve usernameove iz baze, stavit ih u array i onda samo provjeravati

Pa i ne baš.

Ako kreneš sa pravilom da korisničko ime mora imati minimalno 6 znakova, možeš ti “korijen” riječi početi uspoređivati i kod 4 znaka, što uvelike umanjuje broj vrijednosti spremljenih u array. Sigurno neće to biti 100kb, znaš li ti koliko toga možeš spremiti u 100kb? :wink:

Više vjerujem da se radi čisto o usporedbi par (ili nekoliko desetaka maksimalno) usporedbi korisničkih imena, jer nema baš toliko puno čestih korisničkih imena isti korijen od prva 3 ili 4 slova.

ajmo reci da treba 6 znakova. Znam da ću smanjit korijen ali kako onda ispraviti ono što si ti gore naveo?

Ispraviti što? Reci točno što te muči pa ću probati detaljnije objasniti.

[quote=“toniperic”]Pa i ne baš.

Ako kreneš sa pravilom da korisničko ime mora imati minimalno 6 znakova, možeš ti “korijen” riječi početi uspoređivati i kod 4 znaka, što uvelike umanjuje broj vrijednosti spremljenih u array. Sigurno neće to biti 100kb, znaš li ti koliko toga možeš spremiti u 100kb? :wink:
[/quote]

pa nebitno… da bude 2kb, opet je znatno vece od bool-a… znaci ti vracas array od recimo 100 usernameova, a onako 10 puta vracas bool (pod pretpostavkom da ce 10 puta upisati vec koristen username)… opet je neusporedivo manje… pogotovo ako ce biti tako kao sto si sam rekao da ce korisnik kada unese vec iskoristeno ime, obrisati sve i kreniti isponova… sto znaci, da ces opet nakon x znakova imati request koji ce vratiti puno vise od bool-a

Ali pazi ovo - ukoliko želi korisničko ime test1234, nakon što je utipkao “test123” on će dobiti kako je korisničko ime zauzeto, ali nakon što doda “4” na kraju moraš mu prikazati poruku da je korisničko ime slobodno.

Istina, ali ako sam tebe shvatio ti zagovaraš ideju da nakon svakog unosa znaka on provjerava i vraća bool nazad?

Ako jeste, i dalje sam protiv toga. Doduše ja ne tvrdim da je način koji je on izabrao najbolje, ja mu samo trudim tehnički pomoći u tom načinu koji je odabrao.

Ja sam više doduše da ima onblur provjeru je li korisničko ime slobodno ili ne, što je jedan request po upisanom korisničkom imenu.

[quote=“toniperic”]Istina, ali ako sam tebe shvatio ti zagovaraš ideju da nakon svakog unosa znaka on provjerava i vraća bool nazad?

Ako jeste, i dalje sam protiv toga. Doduše ja ne tvrdim da je način koji je on izabrao najbolje, ja mu samo trudim tehnički pomoći u tom načinu koji je odabrao.
[/quote]

pa normalno da ne nakon svakog unesenog slova, rekao sam da nacinom na koji sam predlozio imas jedan request… koji vraca bool
znaci, ili na blur, ili na submit, uglavnom kad je unos zavrsen

[quote=""]
Ja sam više doduše da ima onblur provjeru je li korisničko ime slobodno ili ne, što je jedan request po upisanom korisničkom imenu.[/quote]

pa sto mu onda nisi tako i rekao :slight_smile:

onda ćemo rišit to na onblur, fala dečki :slight_smile:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja