06. august 2007 - 18:05Der er
16 kommentarer og 1 løsning
AJAX: Fejl når der sendes en længere tekst fra et textarea
Hej alle sammen! Jeg er ny her på eksperten, men er ikke i tvivl om at i kan hjælpe mig med mit lille problem.
Jeg er i gang med at lave et forum helt fra bunden, til en side for piger. Det er muligt at "preview" sit indlæg inden det postes, og i den forbindelse opdagede jeg at jeg fik en javascript fejl i IE (der opstod en udefineret fejl), og der sker intet i FireFox heller, på linjen med:
http.open("GET", url, true);
Fejlen opstår når jeg skriver en længere tekst i tekstfeltet (omkring 2000 tegn).. teksten sendes med ajax til en php-fil som f.eks. fjerner html og nogle andre ting, og returnerer resultatet, som så opdateres på siden med innerHTML.
Det korte af det lange.. Preview funktionen virker egentlig som den skal, men når det drejer sig om en lang tekst, sker der en fejl (i http.open går jeg ud fra) og ingen tekst returneres.
Jeg er ikke specielt rutineret i ajax, og dette er ved at være ret frustrerende, så alt hjælp ville være kanon!
PS. Er der nogle klassiske fejl jeg skal være speciel opmærksom på, når jeg laver et forum der skal bruges af 30.000+ brugere?
Haha, jeg var begyndt at tænke lidt på at prøve med POST, men faldt over et indlæg der påstod at man kunne bruge nærmest uendeligt lange URLs med GET...
Jeg prøver lige at se om jeg kan få det omvendt til at bruge POST, og så vender jeg tilbage.. Mnage tak for det hurtige svar!
Ajax er dog meget svært at bruge rigtigt og med så mange brugere, der kan bruge Ajax-funktionen på samme tid, vil du højst sandsynligt opleve, at din server sløves stort. Hvornår kalder du funktionen? Hver gang noget er blevet indtastet i textareaet eller blot når brugeren vælger "preview"?
Jeg ved, det er et kedeligt forslag, men jeg ville nok foreslå dig at foretage fjernelsen af HTML med JavaScript. Det vil hjælpe gevaldigt på serverens og browserens kraft.
w13.. Den foretages ved et tryk på en "Vis indlæg" knap, grunden til at også bliver sendt til en php-fil er at der bruges forum-kode i stil med phpBB kode osv.
Desuden kan en snu person vel gemme kildekoden, og så slette javascript delen der fjerner html og så køre siden lokalt.
Derudover kontrolleres der i php filen om man er admin/mod, hvilket tillader brug af HTML.
Er det mere krævende at bruge ajax på denne måde, end at sende dem til en decideret preview side? Man skal jo være god ved ens server hehe
Jep, som Thesurfer siger. =) Og du har jo helt ret i, at man sagtens kan undgå javascript-koden, hvis man kender bare lidt til det, og det er der jo ikke meget at gøre ved.
JavaScript er bedst for bruger og server, når der skal valideres/udføres kommandoer som din, men desværre kan det omgåes. Derfor bør man også gardere sig med både JavaScript og et ServerSide-sprog, desværre. Det er skod, at det er sådan, men hvis man vil være sikker, er det måden.
Hvis du søgte på Eksperten-brugeren Olebole, ville du finde ud af, at omkring 30% af alle hans svar her på Eksperten handler om, hvor forsigtigt man skal omgåes AJAX - som regel slet ikke. Et af hans argumenter er som regel, at næsten ingen kan finde ud af at bruge det ordentligt, og at Googles folk faktisk er nogle af de eneste, han har set, der gør det ordentligt.
Ajax kan være enormt smart til eksempelvis løbende at vise nye indlæg/nyheder uden at siden opdateres, men det bør bruges mindst muligt, og helst slet ikke i situationer som din.
Desuden mister man hukommelse i IE, når man sender XMLHttpRequests med metoden 'get'.
Et forum som Eksperten er der trillionader af links, der peger mod på Google. Det er fordi, Google og andre søgemaskiner kan læse indlægene. Da søgemaskiner ikke kan JavaScript, ville dette ikke være tilfældet, hvis sitet var AJAX-drevet ... værd at tænke over =)
AJAX bruger jeg kun for at sende teksten igennem en lille php fil, der fjerner HTML og laver forumkode om til HTML ligesom BB kode i phpBB.. alternativet er jo at submitte en alm. form som i siger, men der indlæses jo også en ny side.. og skal denne redigeres så skal en ny side indlæses..
Med denne metode kan man se sit indlæg ved at trykke "vis indlæg".. I mine øjne vil det give det samme??? Jeg har lagt mærke til at bla. Joomla benytter sig af preview på samme måde.. er det virkeligt så skidt?? Det er jo ikke noget der ligger og trækker på serveren andet end når brugeren vil se "preview" sit indlæg..
Jeg kan godt skrive url til eksemplet hvis i er i tvivl om hvad jeg mener?
Der er ikke noget galt i det, hvis man kan kode det. Problemet er, at det er svært uden at miste hukommelse i IE - og hvis det skal kodes rigtigt.
Mange løsninger bruger innerHTML, som dels: 1) aldrig har været valid i nogen standard 2) overskriver dokumentfragmentet, den bruges på - hvilket betyder tab af referencer til og fra fragmentet 3) er komplet inkompatibel med XHTML
I AJAX formateres data som XML eller JSON på serveren, inden de returneres til klienten. Her oprettes HTML-elementer med DOM - de fyldes med data - og indsættes i dokumentet.
Dét er AJAX ... ikke det 90'er slamkode, der vises i div. tutorials - eller bruges i div. såkaldte AJAX-libraries =)
Jeg begyndte for nogen tid siden at skrive en artikel om en X-browser wrapper for XMLHttpRequest-objektet, men fandt udaf, at jeg måtte skrive en masse mere, hvis emnet skulle dækkes ordentligt. Jeg regner med at loade en del op på www.dengodekode.dk i løbet af slutningen af denne og næste måned - men mon ikke, det bliver nævnt i en tråd eller to ;o)
olebole, din slacker.. kom igang med noget AJAX.. ;-)
teekay> Husk at markere navnet i boksen til venstre, inden du klikker på Accepter-knappen.. ellers sker der ikke noget.. :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.