2010-08-11 8 views
0

J'ai des problèmes pour envoyer un tableau JSON jQuery via Ajax à un script PHP. Quel est le problème ici:Envoyer JSON jQuery Ajax à PHP et retour

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!"); 
    } 
}); 

C'est le 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"; 
} 

L'erreur que je reçois dans Firebug est:

Error: JSON.parse

Répondre

0

AFAIK, il n'y a pas de méthode $.toJSON dans jQuery, vous cherchez probablement $.parseJSON et d'ailleurs vous créez déjà JSON ici:

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

désolé oublié de mentionner que j'utilise un plugin json pour jQuery – Titan

+0

@Alex Crooks - Quel plugin serait-ce? – Ender

+0

http://code.google.com/p/jquery-json/ mais je ne l'utilise que dans l'exemple car j'ai du mal à faire en sorte que cela fonctionne de manière différente – Titan

0

Je pense que le problème est que vous envoyer des données comme objet, essayez d'envoyer sous forme de tableau var thing = {tee: tee, vote: vote}; à un tableau

0

Vérifiez cette question: Serializing to JSON in jQuery

Les liens de réponse acceptée à un plug- sérialisation JSON dans recommandé par John Resig (le créateur de jQuery). Il ne traite pas vraiment votre bug spécifique, mais peut-être que l'utilisation de ce plug-in vous aidera à trouver une solution stable.

En regardant brièvement, si vous utilisez ce plug-in, il semble que vous remplacez cette ligne:

var encoded = $.toJSON(thing); 

avec ceci:

var encoded = JSON.stringify(thing); 

Hope that helps!

0

Merci pour vos responces, je suis allé avec:

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

au lieu de $ .ajax et cela a fonctionné.