2010-11-12 103 views
0

你好,我正在以更清晰的方式重写我的问题。我有一个JavaScript数组就像这样:JSON解码php问题

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 
}); 

我必须使用encodeURIComponent与ajax发布的原因。 而在PHP方面我有这个:

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

解码对象失败。的$ _ POST [“myvalues”]回声像给这个:

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

这似乎不是一个有效的JSON对象东阳有“””双引号内部的任何一个知道如何避免这个问题? 感谢

+0

那是什么JSON.stringify你使用?看起来像它的破碎。 – user123444555621 2010-11-12 21:33:12

+0

这可能会有所帮助 - stackoverflow。 com/questions/6807180/how-to-escape-a-json-string-to-it-in-a-url/ – foxybagga 2012-11-30 07:13:50

+0

让我说已经解决了使用jquery $ .ajax数据对象表示法 – albanx 2012-11-30 10:59:29

回答

0

只是一个猜测,但将与\工作转义所有特殊字符旁边的双引号?

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

好吧,我可以做到这一点,但如果我有这样的文本在数组中:asdasd \“asdasd,转义将产生此:asdasd \\”asdasd,转义\而不是“。所以它不起作用 – albanx 2010-11-12 21:15:30

+0

在这种情况下,你能不能逃脱两个角色来产生asdasd \\\“”asdasd? – user506069 2010-11-12 21:20:04