【问题标题】:Sending JSON jQuery Ajax to PHP and back将 JSON jQuery Ajax 发送到 PHP 并返回
【发布时间】:2010-08-11 20:13:08
【问题描述】:

我在通过 Ajax 将 JSON jQuery 数组发送到 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

【问题讨论】:

    标签: php jquery ajax json


    【解决方案1】:

    AFAIK,jQuery 中没有 $.toJSON 方法,您可能正在寻找 $.parseJSON,顺便说一句,您已经在这里创建了 JSON:

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

    【讨论】:

    • 抱歉忘了提我正在使用 jQuery 的 json 插件
    • @Alex Crooks - 那是什么插件?
    • code.google.com/p/jquery-json 但我只在示例中使用它,因为我正在努力让它工作,所以尝试不同的东西
    【解决方案2】:

    我认为问题在于您将数据作为对象发送,尝试作为数组发送 var thing = {tee: tee, vote: vote}; 到数组

    【讨论】:

      【解决方案3】:

      看看这个问题:Serializing to JSON in jQuery

      接受的答案链接到 John Resig(jQuery 的创建者)推荐的 JSON 序列化插件。它并不能真正解决您的特定错误,但也许使用该插件会帮助您获得稳定的解决方案。

      简单看一下,如果你使用那个插件,你会发现你会替换这一行:

      var encoded = $.toJSON(thing);
      

      用这个:

      var encoded = JSON.stringify(thing); 
      

      希望有帮助!

      【讨论】:

        【解决方案4】:

        感谢您的回复,我同意了:

        $.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 并且它有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-17
          • 1970-01-01
          • 2014-08-19
          • 2014-01-19
          • 1970-01-01
          相关资源
          最近更新 更多