mam mały problem z zaczytaniem danych pobranych z MySQL do tabeli Bootstrap/Footable3.
Kod
<table class="table footable table-striped table-hover table-condensed table-responsive" data-show-toggle="true" data-filtering="true" data-paging="true" data-sorting="true" data-filter-delay="100" data-filter-min="3" data-filter-dropdown-title="Szukaj" data-filter-placeholder="Szukaj" data-paging-size="15"></table>
Za pomocą
Kod
jQuery(function($){
$('.table').footable({
"columns": jQuery.get("columns.json")
});
});
$('.table').footable({
"columns": jQuery.get("columns.json")
});
});
ustawiam dane kolumn. Tutaj wszystko jest ok.
Kod
$.getJSON("lk.json",function(data){
var items = [];
$.each(data,function(key,val){
items.push("<tr>");
items.push("<td id=''"+key+"''>"+val.id+"</td>");
items.push("<td id=''"+key+"''>"+val.sname+"</td>");
items.push("<td id=''"+key+"''>"+val.city+"</td>");
items.push("<td id=''"+key+"''>"+val.tel+"</td>");
...
items.push("</tr>");
});
$("<tbody/>",{html:items.join("")}).appendTo("table");
});
var items = [];
$.each(data,function(key,val){
items.push("<tr>");
items.push("<td id=''"+key+"''>"+val.id+"</td>");
items.push("<td id=''"+key+"''>"+val.sname+"</td>");
items.push("<td id=''"+key+"''>"+val.city+"</td>");
items.push("<td id=''"+key+"''>"+val.tel+"</td>");
...
items.push("</tr>");
});
$("<tbody/>",{html:items.join("")}).appendTo("table");
});
I tu także jest ok. Dane z pliku json wczytują się bez najmniejszego problemu. Plik ten generuję sobie co jakiś określony czas.
Problem mam jednak taki, że dane w tym pliku szybko dezaktualizują się a dodatkowo nie chcę aby plik json był dostępny dla wszystkich. Wrzucenie go do innego katalogu i umieszczenie pliku .htaccess z zapisem "deny from all" nic nie da, ponieważ sam jquery go nie pobierze.
Wpadłem na pomysł aby plik json był generowany przez plik php
Kod
...
while ($row=mysqli_fetch_array($result)){
$data[] = array(
'id' => $ll,
'sname' => stripslashes(trim($row['nazw'])),
'city' => stripslashes(trim($row['miejsce'])),
'tel' => stripslashes(trim($row['telefon'])),
...);
$ll++;
}
echo json_encode($data);
while ($row=mysqli_fetch_array($result)){
$data[] = array(
'id' => $ll,
'sname' => stripslashes(trim($row['nazw'])),
'city' => stripslashes(trim($row['miejsce'])),
'tel' => stripslashes(trim($row['telefon'])),
...);
$ll++;
}
echo json_encode($data);
gdzie w $data mam tablicę z danymi do wyrzucenia.
Sam plik wykonuje się bez błędów i "drukuje" to co powinien. Jednak taki plik nie chce się wczytać przez jQuery.
Ilość danych do zaczytania do tablicy jest duża i szybko rośnie, w związku z tym chciałem aby dane zaczytały się przez AJAX.
Jednym zdaniem: statyczny plik json zaczytuje się bez problemu, dynamicznie generowany w php nie zaczytuje się.
Macie jakiś pomysł jak to ugryźć?
Problem udało mi się rozwiązać. Męczyłem się z tym ok. tygodnia.
"Uruchamianie" tabeli i ładowanie danych do niej
Kod
jQuery(function ($) {
jQuery('.footable').footable({
"columns": $.get('columns.json'),
"rows": $.get('lk.php')
});
});
jQuery('.footable').footable({
"columns": $.get('columns.json'),
"rows": $.get('lk.php')
});
});
Natomiast końcówka pliku lk.php (generującego plik json)
Kod
header("Content-Type: application/json");
echo json_encode($data);
echo json_encode($data);