Отправка JSON jQuery Ajax в PHP и обратно - PullRequest
0 голосов
/ 12 августа 2010

У меня проблемы с отправкой JSON-массива JSON через 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

Ответы [ 4 ]

0 голосов
/ 12 августа 2010

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

$.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, и это сработало.

0 голосов
/ 12 августа 2010

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

0 голосов
/ 12 августа 2010

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

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

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

var encoded = $.toJSON(thing);

с этим:

var encoded = JSON.stringify(thing); 

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

0 голосов
/ 12 августа 2010

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

var thing = {tee: tee, vote: vote};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...