Gå til innhold

Hjelp, PHP og JSON problemer med apostrof i verdi


Anbefalte innlegg

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
Videoannonse
Annonse
Gjest Slettet+142

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
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

$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? :p

Endret av Slettet+142
Lenke til kommentar

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

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 :p

Endret av Slettet+142
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...