2015-09-06 2 views
0

Я отправляю запрос Ajax в базу данных для извлечения всех данных из конкретной таблицы MySQL. Я получаю результат успешно. Однако результатом, который я получаю, является объект stdClass. Теперь я смущен, как обращаться к ним с помощью jQuery для вывода их на мою страницу.Доступ к объекту stdClass с использованием Ajax

// fetch.php 

// Display particular SMS by sid 
$result = $database->get_by_sid($_POST['sid']); 

// Rendering the result to Ajax 
foreach ($result as $message) { 
    print_r($message); 
} 

// main.js 
$.ajax({ 
    url: '/admin/fetch.php', 
    data: 'sid=' + sid, 
    method: 'POST', 
    beforeSend: function() { 
     $('.progress').show(); 
    }, 
    complete: function() { 
     $('.progress').hide(); 
    }, 
    success: function (data) { 
     console.log(data); 
    }, 
    error: function() { 
     Materialize.toast('Cannot send the request. Please try again later or refresh the page', 4000); 
    } 
return falsel 
}); 

И я получаю результат, как следующий PHP StdClass формат объекта:

// console 
stdClass Object 
(
    [id] => 1 
    [user_name] => admin 
    [phone_number] => +16469267421 
    [from] => +16469267421 
    [body] => Hi Ngrok 
    [sid] => SM1fe8a7a5a65261a7ebc765e020b1d89a 
    [time] => 2015-09-03 06:18:13 
    [status] => received 
) 
stdClass Object 
(
    [id] => 2 
    [user_name] => admin 
    [phone_number] => +16469267421 
    [from] => +16469267421 
    [body] => Okay. so the request is perfect :) 
    [sid] => SM4b4d9fc928e12e3ddbf63df6204fb4cd 
    [time] => 2015-09-03 06:20:19 
    [status] => received 
) 
stdClass Object 
(
    [id] => 3 
    [user_name] => admin 
    [phone_number] => +16469267421 
    [from] => +16469267421 
    [body] => Wow, I'm really happy to see this now :) 
    [sid] => SM4704dff6517c02e284cbfe812730917c 
    [time] => 2015-09-03 06:21:06 
    [status] => received 
) 
stdClass Object 
(
    [id] => 4 
    [user_name] => admin 
    [phone_number] => +16469267421 
    [from] => +16469267421 
    [body] => I hope everything is now working correctly as expected. 
    [sid] => SM6577ca7e346551486d2572acfe99aec0 
    [time] => 2015-09-03 06:32:22 
    [status] => received 
) 
stdClass Object 
(
    [id] => 5 
    [user_name] => admin 
    [phone_number] => +16469267421 
    [from] => +16469267421 
    [body] => Hi, Good morning :) 
    [sid] => SM7f3d9adbfd1274c58efaaeb9a3aca013 
    [time] => 2015-09-03 07:02:30 
    [status] => received 
) 

Итак, я хотел бы знать, как вы можете получить доступ к результату как Объект Javascipt для вывода как: data.body

+0

wont the .each (data) iteration work here? – sajanyamaha

+0

Он не работал с использованием цикла, поскольку данные не были доступны как объект Javascript. –

ответ

0

Вы будете иметь передавать данные с вашего PHP сервера к клиенту, как JSON

header('Content-Type: application/json'); 
$result = $database->get_by_sid($_POST['sid']); 

// Rendering the result to Ajax 
$data = []; 
foreach ($result as $message) { 
    $data[] = $message; 
} 
echo json_encode($data); 
exit; 

// main.js 
$.ajax({ 
    url: '/admin/fetch.php', 
    data: 'sid=' + sid, 
    method: 'POST', 
    beforeSend: function() { 
     $('.progress').show(); 
    }, 
    complete: function() { 
     $('.progress').hide(); 
    }, 
    success: function (data) { 
     $.each (data, function (i, v) { 
      //v.id id 
      //v.user_name user_name 
      //v.phone_number phone_number 
     }); 
    }, 
    error: function() { 
     Materialize.toast('Cannot send the request. Please try again later or refresh the page', 4000); 
    } 
}); 

удалить также return falsel линия от main.js

+0

Большое вам спасибо. Отлично работает. Я не знал, что должен установить тип заголовка как JSON. Однако логика проста, я пропустил ее (y) –

0

Сначала создайте массив результатов на стороне сервера:

$output = []; 
foreach ($result as $message) { 
    $output[] = $message; 
} 

Затем, когда вы будете готовы, чтобы отправить его обратно в JavaScript, установить тип содержимого: заголовок приложения/JSON и распечатать JSON-закодирован версию массива:

header('Content-Type: application/json'); 
echo json_encode($output); 
exit; 
0

Как вы получаете данные образуют БД? Если вы получите их как вспомогательный массив, вы можете использовать json_encode.

В вашем fetch.php (вместо Еогеасп):

echo json_encode($result); 
+0

Я извлекаю данные из базы данных в качестве объекта, так как он намного чище. Однако сохранение результата в пустой массив и его кодирование JSON разрешило проблему. Спасибо всем за вашу помощь. –

1

Вы можете получить объект первым и создать массив

while($row= mysqli_fetch_row($result)) 
{ 
    $arr[]= $row; 
} 
echo json_encode($arr); 
exit; 

Это даст ответ в формате JSON. если вы хотите получить отзыв в формате массива, вы это сделаете.

print_r($arr); 
    exit; 
Смежные вопросы