2010-11-12 5 views
0

Bonjour Je réécris mon problème de manière plus claire. J'ai un tableau javascript comme ceci:Problèmes PHP de décodage JSON

var values=new Array('this is my "name"',encodeURIComponent('me&you&there'),encodeURIComponent('"£$%&/'),'0'); 
var jsonval=JSON.stringify(values); 
$.ajax({ 
    type:'post', 
    url:'dosomething.php', 
    data:'action=getdata&myvalues='+jsonval 
}); 

Je dois utiliser la cause encodeURIComponent de l'affichage avec ajax. Et à côté php j'ai ceci:

$ myvals = json_decode ($ _ POST [ ''] myvalues, true);

Cela échoue à décoder l'objet. un écho de $ _POST [ « myvalues ​​»] quelque chose comme donner ceci:.

{"1":"this is my "name"","2":"me&you&there","3":""£$%&/","4":"0"} 

Cela ne semble pas être un objet JSON valide beacause il a « » », intérieur doubles citations Tout savoir comment éviter ce problème ? Merci

+0

Qu'est-ce que JSON.stringify vous utilisez? – user123444555621

+0

on dirait qu'il est cassé. cela pourrait aider - stackoverflow. com/questions/6807180/how-to-escape-a-json-string-to-have-it-in-a-url/ – foxybagga

+0

disons que j'ai déjà résolu en utilisant jquery $ .ajax notation de l'objet de données – albanx

Répondre

0

Juste une supposition, mais il s'échapper votre guillemet à côté de tous les caractères spéciaux avec un travail \?

var values=new Array('this is my "name"',encodeURIComponent('me&you&there'),encodeURIComponent('\"£$%&/'),'0'); 
var jsonval=JSON.stringify(values); 
$.ajax({ 
    type:'post', 
    url:'dosomething.php', 
    data:'action=getdata&myvalues='+jsonval 
}); 
+0

Ok je peux faites-le mais si j'ai un texte comme celui-ci dans le tableau: asdasd \ "asdasd, l'échappement produira ceci: asdasd \\" asdasd, échappant au \ et non au ". Donc, ça ne marche pas – albanx

+0

Dans ce cas, pourriez-vous pas échapper les deux caractères pour produire asdasd \\\ "asdasd? – user506069