vidarv Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 Noen som ser hvordan feilen kan løses? Jeg regner med dere ser intensjonen til koden... $arrData = array ("foo" => "bar's"); $strData = json_encode($arrData); ?> <script> try{ var data = eval( '(' + '<?php echo $strData; ?>' + ')' ); alert(data.foo); } catch (e){ alert('JSON Error: ' + e.toString()); } </script> Jeg får parse feil på eval utrykket med Bar's som verdi. Noen som vet hvordan jeg kan kommer over dette? Dette er bare et forenklet tilfelle, men skal egentlig bygge opp dette fra en database, slik at "foo" => "{$dbRes[$i]}". Lenke til kommentar
Gjest Slettet+142 Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 Jeg ser virkelig ikke hva intensjonen i denne koden er, men jeg prøver; $arrData = array ("foo" => "bar's"); $strData = add_slashes( json_encode($arrData) ); ?> <script> try{ var data = eval( '(' + '<?php echo $strData; ?>' + ')' ); alert(data.foo); } catch (e){ alert('JSON Error: ' + e.toString()); } </script> La til addslashes().. Lenke til kommentar
vidarv Skrevet 17. juli 2007 Forfatter Del Skrevet 17. juli 2007 Jeg ser virkelig ikke hva intensjonen i denne koden er, men jeg prøver; $arrData = array ("foo" => "bar's"); $strData = add_slashes( json_encode($arrData) ); ?> <script> try{ var data = eval( '(' + '<?php echo $strData; ?>' + ')' ); alert(data.foo); } catch (e){ alert('JSON Error: ' + e.toString()); } </script> La til addslashes().. 9091061[/snapback] addslashes fungere ikke dessverre, har prøvd... intensjonen er at det skal komme en alertbox med teksten : bar's endrer jeg til "foo" => "bars" altså uten apostrof fungerer dette... Noen med JSON erfaring som vet hvordan jeg escaper/encoder quotes for at dette skal fungere? Lenke til kommentar
Gjest Slettet+142 Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 (endret) $arrData = array ("foo" => "bar's"); $strData = json_encode($arrData); $strData = str_replace("'", "\'", $strData); ?> <script> try{ var data = eval( '(' + '<?php echo $strData; ?>' + ')' ); alert(data.foo); } catch (e){ alert('JSON Error: ' + e.toString()); } </script> La til addslashes(). Den skal da vel virke? Endret 17. juli 2007 av Slettet+142 Lenke til kommentar
magicgunnar Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 Jeg har aldri brukt JSON, men har vært litt borti javascript. Tror cluet her er at du må escape ' to ganger. Første gangen for å få den inn i evalen og enda en gang for å få den inn i koden du eksekverer inni evalen, det kommer litt an på hvordan uttrykket faktisk ser ut. Du burde printe det fullstendige uttrykket som står inni evalen til skjermen din, og putte det inn i et hardkodet script med x-antall \ foran. Jeg prøvde meg litt fram her: http://www.w3schools.com/jsref/tryit.asp?f...e=tryjsref_eval og alerten funker med både \\' og \\\' inni alerten, som igjen ligger inni evalen. Eller du kan bruke hurtigmetoden, krysse fingre og tær og prøve med en dobbel add_slashes: $strData = add_slashes(add_slashes(json_encode($arrData))); Lenke til kommentar
Gjest Slettet+142 Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 (endret) Da jeg testet koden lokalt fant jeg ut at koden jeg skrev i forrige innlegg skulle virke. Jeg prøvde da også med dobbel escaping, men det virket ikke. En annen ting er at, skal man escape med addslashes(), kan man ikke bruke addslashes() på JSON return strengen, men man må escape verdiene i arrayet. Ellers vil man jo også (dobbelt) escape "-ene som JSON lager.. Eller noe sånt Endret 17. juli 2007 av Slettet+142 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå