2009-06-24 10 views
0

ma question est: Comment mon script php peut envoyer des données de type json et reçu de nouveau dans le succès ou la fonction complète?obtenir des données json retour de l'appel ajax

Je tentais d'obtenir this chatfunction pour travailler sur mon site Parce qu'il diddn't travail, je créé une partie réduite au minimum le code de vérifier si elle avait quelque chose à voir avec la méthode JSON.

J'ai seulement testé si je pouvais récupérer un nom de session après le traitement du phpscript Ce que je récupère est "undefined" au lieu de "johndoe".

Je n'ai aucune idée de ce qui pourrait être le problème. De toute évidence, le script a bien fonctionné pour les autres, si vous voyez les commentaires sur la page des créateurs.

ceci est mon testingcode

<?php 
session_start(); 
$_SESSION['username'] = "johndoe" ;// Must be already set 
?> 

<script type="text/javascript" src="includes/jquery.js"></script> 
<script language="JavaScript"> 
$(document).ready(function(){ 
$("#testjson").click(function(e){ 
startJsonSession(); 

    return false; 
    }); 


function startJsonSession(){ 
    $.ajax({ 
     url: "jsontest.php?action=startjson", 
     cache: false, 
     dataType: "json", 
     complete: function(data) { 
      username = data.username; 
      alert(username); 
     } 

    }); 
} 


}); 
</script> 

<?php 
//the php script 

if ($_GET['action'] == "startjson") { startjsonSession(); } 



function startjsonSession() { 
    $items = ''; 


    /*if (!empty($_SESSION['openChatBoxes'])) { 
     foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) { 
      $items .= chatBoxSession($chatbox); 
     } 
    } 


    if ($items != '') { 
     $items = substr($items, 0, -1); 
    }*/ 

header('Content-type: application/json'); 
?> 
{ 
     "username": "<?php echo $_SESSION['username'];?>", 
     "items": [ 
      <?php echo $items;?> 
     ] 
} 

<?php 


    exit(0); 
} 

?> 

merci, Richard

Répondre

1

Richard, vous devriez regarder dans la fonction json_encode() en PHP. Il va convertir votre tableau en JSON rapidement, et vous éviter de devoir gérer les plus petites nuances de la syntaxe JSON avec de grandes quantités de données.


Mise à jour: Code modifié

<?php 

    session_start(); 
    $_SESSION['username'] = "johndoe" ;// Must be already set 

?> 

<script type="text/javascript" src="includes/jquery.js"></script> 
<script language="JavaScript"> 
$(document).ready(function(){ 

    $("#testjson").click(function(e){ 
     startJsonSession(); 
     return false; 
    }); 

    function startJsonSession(){ 
     $.ajax({ 
      url: "jsontest.php?action=startjson", 
      cache: false, 
      dataType: "json", 
      complete: function(data) { 
       username = data.username; 
       alert(username); 
      } 

     }); 
    } 

}); 
</script> 

<?php 

    if ($_GET['action'] == "startjson") { 
     startjsonSession(); 
    } 

    function startjsonSession() { 
     $items = ''; 

     print json_encode(array(
      "username" => "bob", 
      "items" => array(
       "item1" => "sandwich", 
       "item2" => "applejuice" 
      ) 
     )); 
    } 
?> 
+0

oui, je l'ai déjà regardé dans ce un peu mais avant que je dois changer le code des créateurs, je me demandais s'il pourrait y avoir quelque chose d'autre à faire que les causes ce. Je n'ai vraiment pas hâte de changer son code parce que je ne le comprends pas complètement. Avec la syntaxe heredoc et plus –

+0

Essayez un format JSON comme ceci: {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5} - Donc votre code be {"username": "bob", "items": "apples"} (Continuez et laissez les valeurs codées en dur pour les tests) – Sampson

+0

Également, tirez cette méthode header() pour le moment - commentez-la. – Sampson