Отправка JSON jQuery Ajax на PHP и обратно

У меня возникли проблемы с отправкой массива JSON jQuery через Ajax в PHP-скрипт. В чем проблема:

var tee = $('#voting_image img').attr('id'); var vote = 1; var thing = {tee: tee, vote: vote}; var encoded = $.toJSON(thing); $.ajax({ url: '/vote_save.php', type: 'POST', dataType: 'json', data: 'vote='+encoded, success: function(data) { var back = $.evalJSON(data).name; $('#voting_hint_name').html(back); $('#voting_buttons').html('<div id="voting_buttons"><a href="#" id="vote_yes">PRINT IT</a><a href="#" id="vote_no">DON\'T PRINT IT</a></div>'); }, error:function () { $('#voting_buttons').html('<div id="voting_buttons"><a href="#" id="vote_yes">PRINT IT</a><a href="#" id="vote_no">DON\'T PRINT IT</a></div>'); alert("There was a problem, your vote was not saved, please try again!"); } }); 

Это PHP

 if (isset($_POST['vote'])&&isset($_SESSION['user'])) { $tee_data = json_decode($_POST['vote']); $the_tee = $tee_data['tee']; $responce = array('name'=> 'Alex Wow', 'test'=> '1'); echo json_encode($responce); } else { echo "error"; } 

Ошибка, которую я получаю в Firebug :

Ошибка: JSON.parse

$.toJSON в jQuery нет метода $.toJSON , вы, вероятно, ищете $.parseJSON и, кстати, вы уже создаете JSON здесь:

 var thing = {tee: tee, vote: vote}; 

Я думаю, проблема в том, что вы отправляете данные как объект, пытаетесь отправить в качестве массива var thing = {tee: tee, vote: vote}; массив

Проверьте этот вопрос: Сериализация JSON в jQuery

Принятый ответ ссылается на плагин JSON для сериализации, рекомендованный Джоном Ресигом (создателем jQuery). Это действительно не касается вашей конкретной ошибки, но, возможно, использование этого плагина поможет вам прийти к стабильному решению.

Если взглянуть на это кратко, если вы используете этот подключаемый модуль, похоже, вы заменили бы эту строку следующим образом:

 var encoded = $.toJSON(thing); 

с этим:

 var encoded = JSON.stringify(thing); 

Надеюсь, это поможет!

Спасибо за ваши ответы, я пошел с:

 $.getJSON( '/vote_save.php?vote='+encoded, function(data) { $('#voting_hint_name').html(data.bob); $('#voting_buttons').html('<div id="voting_buttons"><a href="#" id="vote_yes">PRINT IT</a><a href="#" id="vote_no">DON\'T PRINT IT</a></div>'); } ); 

вместо $ .ajax, и это сработало.