2015-04-08 3 views
0

У меня есть объект JSON (postData) Я хочу отправить на веб-службу PHP.JSON - jquery to php; как POST данные

$.ajax({ 
    url: postLink, 
    type: 'POST', 
    data: JSON.stringify(postData), 
    complete: function() { 
     console.log('COMPLETE: tried to send json'); 
    }, 
    success: function (data) { 
     console.log("Success" + data); 
     if (data.success) { 
      // do something 
     } 
    }, 
    error: function (error) { 
     console.log("ERROR" + error); 
    } 
}); 

В PHP (Symfony) Я прочитал это так:

$content = htmlspecialchars_decode($this->get('request')->getContent(), ENT_NOQUOTES); 
$data = array(); 

if (!empty($content)) 
{ 
    $data = json_decode($content, true); 

    var_dump($content); 

Я получаю INTERNAL SERVER ERROR на json_decode. Я считаю, что это потому, что (по моему var_dump) в формате JSON приходит через к WebService выглядит следующим образом:

"auth":{"username":" ... 

Я даже пытался добавить htmlspecialchars_decode преобразовать эти цитаты обратно в "'... but it still comes back as " `

Я не знал, что делать. Поэтому любые идеи очень ценятся.

+0

'JSON.stringify' создает строку для печати в формате HTML. Откуда берутся ваши данные? Попробуйте использовать 'serialize' или' serializeArray' в вашей форме. – Twifty

+0

вы можете зарегистрировать свой аккаунт: JSON.stringify (postData). Если вы отправите json-объект, php поймет его как массив (если это объект js) – MouradK

ответ

0

Удалить htmlspecialchars_decode

Использование:

$content = html_entity_decode($this->get('request')->getContent()); 
$data = json_decode($content); 

Все проблемы из-за JSON.stringify(postData). Вам это действительно нужно?

+0

Без изменений ...... – b85411

+0

Он упомянул в вопросе, что он «пробовал» 'htmlspecialchars_decode'. Это должен был быть комментарий. – Twifty