Mój plik index.php:
<?php
session_start();
ob_start();
?>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<select class="group"></select>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="_skripts.js"></script>
</body>
</html>
<?php
ob_end_flush();
?>
Plik ze skryptem:
$(function() {
$.ajax({
type: "POST",
url: "fill_form.php",
dataType : 'json',
success : function(json) {
for(i = 0; i < json.length; i++) {
$('.group').append('<option value="' + json[i] + '">' + json[i] + '</option>');
}
}
})
})
I skrypt:
<?php
session_start();
header("Content-Type: text/html; charset=utf-8");
$connect = new mysqli(***);
$question = "SELECT `class` FROM _registry";
$result = $connect -> query($question);
$groups = Array();
while(($data = $result -> fetch_assoc()) !== null) {
if(!in_array($data['class'], $groups)) {
array_push($groups, $data['class']);
}
}
echo json_encode($groups);
$connect -> close();
?>
Przykład pobiera dane z bazy i wstawia je jako opcję do selekta. Wszystko działa dopóki z bazy zostanie odczytana zmienna zawierająca polskie znaki. Gdy w skrypcie dopiszę:
echo $data['class'];
zostaje wyświetlone np. wp�yw. Do tablicy zostaje wpisany w takiej formie, jednak przy zmianie na json wartość jest zmieniana na null przez co tracę dane. Gdy wyświetlam dane w którymś z powyższych plików poprzez alert, czy echo są one wyświetlane normalnie, więc jest coś źle przy odczytywaniu ich z bazy. Wszystkie pliki są kodowane przy pomocy UTF-8 bez BOM.
Za pomoc z góry dziękuję.