Объект Cant Post JSON с использованием Jquery.post ()

У меня есть следующий объект, который создается в моем приложении javascript.

poll_data[active_question] = { 'question': $('div.question_wrap textarea').attr('value'), 'answers': [ $('div.answer_wrap input#0').attr('value'), $('div.answer_wrap input#1').attr('value'), $('div.answer_wrap input#2').attr('value'), $('div.answer_wrap input#3').attr('value'), $('div.answer_wrap input#4').attr('value'), $('div.answer_wrap input#5').attr('value') ] }; 

active_question устанавливается на «poll», 0, 1, 2, 3, 4 или 5 в зависимости от вопроса, который сейчас обрабатывается. Я пытаюсь опубликовать этот объект в php-скрипте, используя следующий JS-код.

  $.ajax({ url: '/somewebsite/poll/create?json=show', type: 'POST', // dataType: 'json', data: poll_data, contentType: 'application/json; charset=utf-8', success: function(data) { alert(data); } }); 

Мой PHP-код очень прост.

  echo json_encode($_POST); exit; 

Когда я запускаю сценарий и нажимаю кнопку, которая запускает отправку данных, я получаю предупреждение (так что работает фактический код ajax), но результат моего PHP-скрипта – это просто пустой массив. Я думаю, что это проблема с тем, как объект построен, но я не уверен, и не смог найти работу.

Заранее спасибо.

Хорошо, несколько вещей:

poll_data не является допустимым объектом JSON. Вам нужно будет использовать poll_data [active_question], который является допустимым объектом JSON. jQuery должен сериализовать это правильно. Удалите contentType – я уверен, что это для php (не положительно), но ваш код не будет работать для меня, пока я не удалю его. Наконец, добавление json = show в строку запроса ничего не делает … это просто будет проигнорировано.

Пара второстепенных вещей: вы можете использовать .val() вместо .attr('value') , и просмотрели ли вы .serialize() чтобы создать свои данные для вас?

делать это на сервере

 $data; $data->question=$_POST['question'] $data->answer=$_POST['answers'] echo json_encode($data); 

сделать это для запроса ajax

  $.ajax({ url: '/somewebsite/poll/create?json=show', type:'POST', //modified data proprty data:poll_data[active_question], success: function(data) { alert(data); } });