2010-11-12 2 views
0

Здравствуйте, я переписываю свою проблему более четко. У меня есть яваскрипта массив так же, как это: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'], правда);

Это не позволяет декодировать объект. эхо $ _POST [ «myvalues»] что-то вроде дать это:.

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

Это, кажется, не является действительным объектом JSON обусловленно он имеет «»»двойные кавычки внутренностей Любой знает, как избежать этой проблемы ? Благодаря

+0

что это JSON.stringify вы используете? Похоже, он сломан. – user123444555621

+0

это может помочь - stackoverflow. com/questions/6807180/how-to-escape-a-json-string-to-have-it-in-a-url/ – foxybagga

+0

скажите, что я уже решил использовать нотацию данных jquery $ .ajax – albanx

ответ

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

+0

В этом случае вы не смогли бы избежать обоих символов для создания asdasd \\\ "asdasd? – user506069