2015-03-26 4 views
0

Я отправляю строчный JSON через AJAX от клиента к серверу. Однако PHP не может декодировать его, хотя он, похоже, правильно структурирован для меня. Я прошел через ответы на подобные вопросы, в большинстве вопросов json_decode возвращает NULL, что здесь не так, вместо этого возвращает пустую строку.PHP json_decode возвращает пустую строку (не NULL)

Что посылает Javascript:

{"columns":{"l1":{"name":"Impressions"},"l2":{"name":"Clicks"}},"domain":"Media Performance"} 

Что PHP печатает (то же самое с сбежавших кавычки):

{\"columns\":{\"l1\":{\"name\":\"Impressions\"},\"l2\":{\"name\":\"Clicks\"}},\"domain\":\"Media Performance\"} 

Может кто-нибудь увидеть этот вопрос здесь? Это кажется довольно простым, но json_decode продолжает возвращать пустую строку.

Приносим извинения, что не вводите код.

Вот AJAX (str является строка JS приведены выше):

$.ajax({ 
      type: "POST", 
      url: base + "handlers/createreport.php", 
      data: { 
       str: str 
      } 
     }) 

А вот createreport.php, нет никакой обработки вообще:

$str = $_POST['str']; 

echo $str; //prints out the string given above with escaped quotes 
echo json_decode($str);  //empty string 
+2

пожалуйста показать код, просто обеспечивая вход и выход не позволяет нам снимать проблемы, что происходит – cmorrissey

+0

Что PHP распечатывает недействителен json, вы как-то обрабатываете свой вход, прежде чем пытаетесь его декодировать? – jeroen

+0

@cmorrissey Я добавил JS и PHP-код к вопросу. – jovan

ответ

0

data отослано в AJAX принимается сервер как параметры POST, поэтому вам не нужно декодировать json, иначе используйте его как массив.

Я просто проверить его, и работает: var_dump($_POST['str']);

<pre class='xdebug-var-dump' dir='ltr'> 
<b>array</b> 
    'columns' <font color='#888a85'>=&gt;</font> 
    <b>array</b> 
     'l1' <font color='#888a85'>=&gt;</font> 
     <b>array</b> 
      'name' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Impressions'</font> <i>(length=11)</i> 
    'l2' <font color='#888a85'>=&gt;</font> 
    <b>array</b> 
     'name' <font color='#888a85'>=&gt;</font> <small>string</small>  <font color='#cc0000'>'Clicks'</font> <i>(length=6)</i> 
    'domain' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Media Performance'</font> <i>(length=17)</i> 

Смежные вопросы