2010-05-01 3 views
0

Привет, ребята У меня есть функция jjery ajax, которая получает данные из php-скрипта. Я хочу вернуть массив со всеми онлайн-пользователями, которые извлекаются из инструкции mysql, и я хочу отправить другие отдельные переменные, которые мне нужны для других целей вместе с ним. Если у кого-то есть какие-то идеи, я был бы очень признателен. ПРИМЕЧАНИЕ: приведенный ниже пример иллюстрирует то, что я хочу сделать, я понимаю, что json-encoding массив с другими переменными дисфункциональен.Можно ли отправить обратно массив json вместе с отдельными переменными

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; 

ответ

1

На PHP стороны вы должны иметь что-то вдоль линий:

$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; 

JQuery стороны может оставаться как есть.

+0

Спасибо Kamil, я пробовал ваш подход, однако сторона jquery, похоже, не распознает массив. Как только я преобразую данные ['array'] в ваш формат, функция умирает. Я попытался проверить страницу и, похоже, вернул правильную информацию, но jquery ее не имеет. Это массив json, который он вернул {"variable1": "test", "variable2": "testing", "array": [{"entry": " user1"}, {"entry": " user2"} { "запись":» user3" }]} – Scarface

+0

NVM Я использовал \t \t \t \t $ .each (json.array, функция (я, элем) { \t \t $ ('# users_online') добавляет (. elem.entry); }); – Scarface

0

Вы действительно хотите отправить обратно объект JSON, содержащий то, что вам нужно.

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

Вы можете использовать следующую структуру:

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

В вашем PHP переменные данные должны быть array (в PHP массив фактически является упорядоченной картой).
Данные ['ids'] будут массивом идентификаторов.
данные ['variable1'] будут переменными1 и т. Д.

then json_encode (data) предоставит вам json вам нужно.