Отображение данных JSON в HTML
Я разрабатываю гибридное приложение с использованием intel XDK. В приложении я использую ajax-запрос к моему PHP-серверу. Сервер будет реагировать с JSON-данных.
Это мой пример json с сервера.
[{
"id":"11",
"user_id":"8000",
"product":"Shoes A",
"quantity":"1",
"date_open":"2015-01-04",
"paid":"1",
"harvested":"",
"reinvest":null,
"profit":null,
"investment":"3000"
},
{
"id":"12",
"user_id":"8000",
"product":"Shoes B",
"quantity":"1",
"date_open":"2015-03-01",
"paid":"1",
"harvested":"",
"reinvest":null,
"profit":null,
"investment":"1500"
}]
Количество продуктов на одного пользователя здесь разное, у некоторых нет продукта, у некоторых есть 1, 2...10 и т. д. товары. Итак, в зависимости от того, сколько продуктов у пользователя, какой лучший способ их отображения. Так что данные / элементы все организованы и хорошо отображаются с изображением на страница загружена.
Должно отображаться автоматически:
| изображение продукта / название продукта / дата / прибыль / инвестиции
, что мой HTML-страницу/настройка стилей CSS? Или что-нибудь еще, что я должен знать об этом.
На моей существующей системе, использующей PHP. Я просто использую foreach пользовательского продукта. Затем стиль каждого класса, в котором будут отображаться данные. Пример:
foreach(products as product){
?>
<div class="img"></div>
<div class="productname">echo product['product'];</div>
<?
}
Поэтому я думаю, можно ли отобразить его в html, как то, что я сделал в PHP. Спасибо за помощь.
Edit: мой вызов ajax на стороне клиента:
$("button").click(function(){
$.ajax({
type: 'POST',
url: "http://www.sample.com/app/user-data.php",
crossDomain: true,
dataType: 'json',
data: { user_token: user_token },
success: function(data, status, jqXHR) {
//console.log(data); //`this is displaying only as object why?`
//console.log(status);
console.log(JSON.stringify(data)); //to string
},
error: function(xhr, ajaxOptions, thrownError) {
alert(ajaxOptions + " " + thrownError);
}
});
});
1 ответ:
Сервер должен предоставлять json, как:
<?php $data = array(); foreach(products as product){ array_push($data, $product); } header('Content-Type: application/json'); echo json_encode($data);
Вы должны получить данные с помощью ajax, а затем обновить DOM:
var dummy_data = [{ "id": "11", "user_id": "8000", "product": "Shoes A", "quantity": "1", "date_open": "2015-01-04", "paid": "1", "harvested": "", "reinvest": null, "profit": null, "investment": "3000" }, { "id": "12", "user_id": "8000", "product": "Shoes B", "quantity": "1", "date_open": "2015-03-01", "paid": "1", "harvested": "", "reinvest": null, "profit": null, "investment": "1500" } ]; function addData(data) { data.forEach(function(row) { var str = '<tr>'; str += '<td>' + row.id + '</td>'; str += '<td>' + row.product + '</td>'; str += '<td>' + row.date_open + '</td>'; str += '<td>' + row.profit + '</td>'; str += '<td>' + row.investment + '</td>'; str += '</tr>'; $('#data_tbl').append(str); }); } $("#fetch_btn").click(function() { //do ajax here and load data /* $.getJSON("get_data.php", function(result) { addData(result); }); */ //for demo calling the function with dummy data addData(dummy_data); });
table, th, td { border: 1px solid black; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <button id="fetch_btn">FETCH BY AJAX</button> <table id="data_tbl"> <tr> <th>image of product</th> <th>name of product</th> <th>date</th> <th>profit</th> <th>investment</th> </tr> </table> </body> </html>