2010-05-01 4 views
0

Hé les gars, j'ai une fonction ajax jquery qui reçoit des données d'un script php. Je veux retourner un tableau avec tous les utilisateurs en ligne qui est récupéré à partir d'une instruction mysql, et je veux envoyer d'autres variables séparées dont j'ai besoin à d'autres fins avec elle. Si quelqu'un a des idées, je l'apprécierais grandement. NOTE: l'exemple ci-dessous est pour illustrer ce que je veux faire, je comprends que json-encodant le tableau avec d'autres variables est dysfonctionnel.Est-il possible de renvoyer un tableau json avec des variables séparées

JQUERY

$.ajax({ 
type: "POST", 
    data: "parameters", 
    url: "retrieval.php", 
    dataType: 'json', 
    success: function(json) 
    { 
    $('#div1').html(json.array); 
    $('#div2').html(json.variable1); 
$('#div3').html(json.variable2); 
} 
}) 

PHP

$qryuserscount1="SELECT * FROM active_users"; 
$userscount1=mysql_query($qryuserscount1); 
while ($row = mysql_fetch_array($userscount1)) { 
$onlineuser= $row['username']; 
$id=$row['id']; 

$data[]=$onlineuser.$id; //for example there are 3 users, should send 3 entries back 
} 
$data['variable1']='something'; 
$data['variable2']='something else'; 

$out = json_encode($data); 
print $out; 

Répondre

1

Côté PHP, vous devriez avoir quelque chose le long des lignes de:

$result = array(); 

$qryuserscount1="SELECT * FROM active_users"; 
$userscount1=mysql_query($qryuserscount1); 
while ($row = mysql_fetch_array($userscount1)) { 
    $onlineuser= $row['username']; 
    $id=$row['id']; 

    $result['array'][]=array('name'=>$onlineuser, 'id' => $id); //for example there are 3 users, should send 3 entries back 
} 
$result['variable1']='something'; 
$result['variable2']='something else'; 

$out = json_encode($result); 
print $out; 

côté JQuery peut rester tel qu'il est.

+0

Merci Kamil, j'ai essayé votre approche mais le côté jquery ne semble pas reconnaître le tableau. Dès que je convertis les données ['array'] à votre format, la fonction meurt. J'ai essayé de tester la page et il semble retourner l'information correcte, mais jquery ne l'a pas. Ceci est le tableau json renvoyé {"variable1": "test", "variable2": "testing", "array": [{"entry": " user1"}, {"entry": " user2"} , { "entrée": » user3" }]} – Scarface

+0

NVM je \t \t \t \t .each $ (json.array, fonction (i, élém) { \t \t $ ('# users_online') append (. elem.entry); }); – Scarface

0

Vous voulez vraiment renvoyer un objet JSON contenant ce dont vous avez besoin.

{ 
    "Users" : [ 
     "Jim", 
     "Bob", 
     "Sue" 
    ], 
    "Something" : 2, 
    "Else" : "This is something else." 
} 
0

Vous pouvez utiliser la structure suivante:

{loggedUsers: [the list], variable1: 'something', variable2: 'something else'} 
0

Dans votre PHP, les données de variables doivent être un array (en PHP un tableau est en fait une carte ordonnée).
data ['ids'] serait un tableau d'identifiants.
data ['variable1'] serait variable1, etc.

alors json_encode (data) vous donnerait le json dont vous avez besoin.

Questions connexes