Я пытаюсь создать сайт, который может отображать некоторые данные из базы данных mysql, используя jquery, и я не могу понять, как заполнить таблицу данными. мой PHP-файл выглядит следующим образом:Использование DataTable с json
<?php
$servername = "localhost";
$database = "testdatabase";
$username = "root";
$password = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$getinfo = "SELECT * FROM greenhouse";
$names = $conn->query($getinfo);
$str = array();
if ($names->num_rows > 0) {
// output data of each row
while($res = $names->fetch_array(MYSQL_ASSOC)) {
$str[] = $res;
}
}
echo json_encode($str);
?>
И это мой сценарий:
<script>
function get_greenhouses(){
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//var returnval = JSON.parse(xmlhttp.responseText);
//document.getElementById("main_text").innerHTML = dataSet[0];
start_table(JSON.parse(xmlhttp.responseText));
//document.getElementById("main_text").innerHTML = returnval[0].Name;
}
}
xmlhttp.open("GET","get_greenhouses.php", true);
xmlhttp.send();
}
function start_table(greenhousedata){
console.log(greenhousedata);
//document.getElementById("main_text").innerHTML = greenhousedata[0].Adress;
$('#example1').DataTable({
"ajax": greenhousedata,
columns: [
{ title: "Name" },
{ title: "ID" },
{ title: "plant type" },
{ title: "install date" },
{ title: "adress" }
]
});
}
$(function() {
get_greenhouses();
});
</script>
Так что я пытаюсь иметь функцию get_greenhouses(), который запускается при загрузке документа. В нем я делаю запрос к файлу PHP, который получает данные, кодирует его в json и отправляет обратно. Когда я получу данные, я хочу передать их функции start_table(), а затем использовать ее для заполнения таблицы. Прямо сейчас я получаю сообщение об ошибке: Предупреждение DataTables: таблица id = пример1 - Недействительный ответ JSON. Для получения дополнительной информации об этой ошибке, пожалуйста, см. http://datatables.net/tn/1 , но когда я перейду по ссылке и проверьте, какие данные я получаю из файла php, она говорит json и выглядит корректно, насколько я могу судить.
Может кто-нибудь сказать мне, что я делаю неправильно, или если есть способ сделать это?
Я, конечно, смотреть на это и поможет в дальнейшем, но вы рассматривали другие варианты вместо DataTables? Это может занять некоторое время, чтобы начать с AngularJS, но http://ui-grid.info/ - это довольно удивительно, и каждый раз он будет превосходить производительность datatable. Первоначально Datatables предназначался для преобразования таблицы HTML, которая уже загружена в DOM. UI-Grid использует углы, чтобы визуализировать HTML только по мере необходимости. –
Как выглядит json в консоли? – markpsmith
@MikelBitson Datatables не обязательно использовать предварительно обработанный html и достаточно эффективен с использованием данных массива – charlietfl