Avatar billede heyn Nybegynder
08. maj 2014 - 14:04 Der er 8 kommentarer og
1 løsning

Problem med '\n' og '\n\t' ved XMLHttpRequest

Hej Eksperter

Jeg har et problem med '\n' og '\n\t'.

Jeg har et object 'data' i javascript som jeg overfører med 'jsondata = "data="+JSON.stringify(data);' i et XMLHttpRequest().

objektet 'data' indeholder blandt andet en tekststreng 'data[text]' hvis værdi f.eks. kunne være '<p>\n\tTekst om arrangementet</p>\n'

Når jeg så udfører '$data = json_decode($_POST['data']);' ønsker jeg at gemme tekststrengen i databasen med '\n' og '\n\t' men det kikser.

'$data->text' bliver i stedet til
'<p>
Text om arrangement</p>
'

Databasen gemmer altså en streng på 3 linier i stedet for en streng der indeholder '\n' og '\n\t'.

Håber nogen kan hjælpe mig.

Venligst Christian
Avatar billede Slater Ekspert
08. maj 2014 - 14:23 #1
Prøv at escape det ved at erstatte \n med \\n osv.
Avatar billede rix Praktikant
08. maj 2014 - 14:58 #2
Str_replace ("\n","\\n", $ string)
Avatar billede heyn Nybegynder
08. maj 2014 - 15:40 #3
Når jeg skriver

$data = json_decode(Str_replace("\n","\\n",$_POST['data']));
print_r($data);

Returnerer min side:

stdClass Object
(
    [action] => modifyarrangement
    [id] => 1
    [name] => Arrangementets navn
    [start] => 2014-05-06 19:00:00
    [end] => 2014-05-08 22:00:00
    [visible] => 1
    [text] => <p>
    Tekst om arrangementet</p>

)

Det lader ikke til at løse problemet. $data['text'] er stadig 3 linier.
Avatar billede heyn Nybegynder
08. maj 2014 - 15:41 #4
Jeg mener $data->text ikke  $data['text'].
Avatar billede rix Praktikant
08. maj 2014 - 15:47 #5
Har du prøvet $data->text = Str_replace("\n","\\n",$data->text);??
Avatar billede heyn Nybegynder
08. maj 2014 - 16:36 #6
Tak - Det løste faktisk en del af problemet.

Men så alligevel ikke helt.

For i databasen (MySQL) bliver \n og \n\t alligevel ikke gemt som tekst hvad enten det nu er et php- el. MySQL problem.

UPDATE arrangements SET name = 'Arrangementets navn', start = '2014-05-06 19:00:00', end = '2014-05-08 22:00:00', text = '<p>\n\tTekst om arrangementet</p>\n', visible = 1 WHERE id = 1 LIMIT 1;

Har i et forslag?
Avatar billede rix Praktikant
08. maj 2014 - 16:42 #7
Der skal du huse at ændre \n til \\n og \t til \\t
Avatar billede heyn Nybegynder
08. maj 2014 - 16:58 #8
Jeg løste problemet

mysql_real_escape_string($data->text)

Smider du et svar rix17172
Avatar billede rix Praktikant
08. maj 2014 - 17:01 #9
Her kom svaret fedt at du fandt ud af det
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester