2010-11-12 105 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