2010-08-11 153 views
0

我在通過Ajax向PHP腳本發送JSON jQuery數組時遇到問題。什麼是這裏的問題:發送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得到的錯誤是:

Error: JSON.parse

回答

0

據我所知,有jQuery中沒有$.toJSON方法,您可能正在尋找$.parseJSON,順便說一句,您已經在這裏創建JSON:

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

對不起,忘了提及我正在使用jQuery插件jQuery – Titan 2010-08-11 20:23:05

+0

@Alex騙子 - 這是什麼插件? – Ender 2010-08-11 20:24:33

+0

http://code.google.com/p/jquery-json/ 但我只是在示例中使用它,因爲我努力讓這個工作,所以嘗試不同的東西 – Titan 2010-08-11 20:30:48

0

我認爲這個問題是您發送的數據爲研究對象,試圖發送的陣列 var thing = {tee: tee, vote: vote};到陣列

0

退房這個問題:Serializing to JSON in jQuery

接受的答案鏈接到一個序列化JSON插件由John Resig(jQuery的創建者)推薦。它並沒有真正解決您的特定錯誤,但是使用該插件可以幫助您獲得穩定的解決方案。

從它簡單地看,如果你使用的是插件,它看起來那麼你會替換此行:

var encoded = $.toJSON(thing); 

與此:

var encoded = JSON.stringify(thing); 

希望幫助!

0

感謝您的responces,我去:

$.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>'); 
      } 
    ); 

,而不是$就和它的工作。