Archief - AJAX: newline uit textarea versturen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

diem

Legacy Member
ik heb een php pagina waarin ik text uit een textarea verstuur via ajax naar een php pagina die deze opslaat in een mysql database.

probleem : de enters (new line chars ? )uit de textarea worden niet doorgestuurd/opgeslagen

ruwe structuur :

"verstuur" pagina :

Code:
<script src="gproj.js"></script>

<form method=post action=index.php name="scrform">
     <textarea name="scratchfld" cols="25" rows="6"></textarea>
     <br/>
     <a href="#" onClick='storedb()'>Save</a>	
</form>

<DIV id = "test"></DIV>

gproj.js :

Code:
function storedb()
{ 
  var url="setval.php?mes=" + document.getElementById('scratchfld').value
  var url = url + '&' + Math.random();
  xmlHttp=GetXmlHttpObject(stateChanged)
  xmlHttp.open("GET", url , true)
  xmlHttp.send(null)
  
  document.getElementById("test").innerHTML= document.getElementById('scratchfld').value
  
}

in setval.php staat er dan enkel de sql code die het opslaat in de database enzo

dus in het javascript bestand gproj.js haal ik de waarde uit de textarea en koppel dit aan de url van de php pagina die alles opslaat in de database.
mijn vermoeden is waarsch dat er hier iets fout gaat ? zoals je misch al kan zien heb ik ook al als test de waarde uit het textfield laten weergeven in de div test :

document.getElementById("test").innerHTML= document.getElementById('scratchfld').value

en deze toont ook geen enters. als ik in de textfield een <br/> ingeef inpl van enter toont hij wel een enter

weet er iem een simpele oplossing hiervoor ? ik dacht : voor het versturen van de text in de textarea alle enters al vervangen door <br/> ? nl2br ? maar hoe pak ik dat dan best aan ?

Obliv`

Legacy Member
Het beste is om de originele tekst in de db te steken (dus die met de enters).
Bij het fetchen doe je dan nl2br.

diem

Legacy Member
als ik op de normale manier een form verstuur doe ik dat ook zo , maar op de "ajax manier" gaat er iets fout tussen het versturen en ontvangen van de js denk ik.

ik denk dat dit : document.getElementById('scratchfld').value , al de enters weglaat, toch zoals ik teste

PC_Freak

Legacy Member
Heb je al geprobeerd van dit eens in een alert te steken, dan zie je meteen of de newlines nog aanwezig zijn.

Code:
alert(document.getElementById('scratchfld').value);

diem

Legacy Member
ik heb ff getest en met alert toont hij de enters wel voor dat hij ze opstuurt naar de backend(? :)) pagina. maar als de waarde terug komt zijn ze weg (nog voor ik ze opsla in de database ,dus daar ligt het niet aan)

ik stuur ze op deze manier door :

var url="setscratch.php?mes=" + document.getElementById('scratchfld').value

kan het dat dit geen enters meestuurt ?

ik zal alvast ff zoeken naar een manier om de enters te veranderen voor ze opgestuurd worden

zeer bedankt voor je hulp :)

PC_Freak

Legacy Member
Gebruik eens
Code:
var url="setscratch.php?mes=" + escape(document.getElementById('scratchfld').value);

Smoerf

Legacy Member
Wel, ik had hetzelfde probleem, maar omdat ik in m'n php bestand nog eens alle html characters deruit filterde kon ik niet werken met <br />

Dus heb ik gewoon alle \n vervangen door _newline_ en dat wordt dan verstuurd naar m'n php pagina, die op zijn beurt de _newline_ vervangt door <br />

'k weet niet of je der iets mee bent maar mocht je je html characters willen d'r uit filteren...

PC_Freak

Legacy Member
Normaal gezien werkt dat perfect, door escape() te gebruiken vervang je alle speciale karakters door %... In PHP krijg je dan normaal gezien de gewone variabele terug zonder dat je terug moet decoderen.

Smoerf

Legacy Member
Dope! Dat moet ik zeker testen!

Tx pc_freak, weer iets wat ik bijgeleerd heb :p

servi

Legacy Member
Voor een bericht te posten zou je trouwens beter de POST-methode gebruiken ( 9 / 10 ga je waarschijnlijk dan dit probleem zelfs niet meer hebben )

diem

Legacy Member
thx pc_freak (en de rest die hielp ook hoor :)) het werkt prachtig :)

servi ; dat deed ik al :)

ff nog een klein vraagje, nu lees ik dat ajax niet ondersteund wordt door firefox, en inderdaad mijn webpagina werkt niet. Wel jammer want ik vond het wel niet zo slecht.
(http://petesbloggerama.blogspot.com/2005/03/firefox-and-ajax-my-butt-gimme-break.html)
maar er wordt een alternatief voorgesteld, namelijk jsrs met verborgen iframe.

maar zover ik het al bekeken heb lijkt het mij maar iets enorm omslachtig. Heeft hier iemand ervaring mee ?

of als er iemand een andere oplossing weet om de huidige code wel met firefox te laten werken. altijd welkom :)

Kn0t

Legacy Member
Ajax werkt ook in firefox hoor. Alleen wordt de referentie naar het XmlHttpRequest object niet in elke browser op dezelfde manier bekomen.

Best is om een framework te gebruiken dat een hogere abstractie biedt zodat je automatisch cross-browser bent.

Zoals prototype http://prototype.conio.net/ of dojo http://dojotoolkit.org/

Edit: ff dat artikel van je gelezen, daar wordt enkel gezegd dat je in FF geen "Ajax-request" naar een andere site kan doen.

servi

Legacy Member
diem zei:
servi ; dat deed ik al :)

sinds wanneer is
var url="setval.php?mes=" + document.getElementById('scratchfld').value
var url = url + '&' + Math.random();
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)

een POST-actie ? :wtf:

diem

Legacy Member
ow mijn excuses ik had het over de post wanneer ik de gegevens verstuurde
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan