В том-то и дело, что переменная не пустая, если возвращать результат ответа json_encode, без преобразования JSON.parse, то echo вернет строку вида : '{one:"one",...}', но к сожалению с ней ничего сделать не получается.
Специально создал два новых файла, без включений :
<html>
<body>
<div id="id01">er</div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "testphp.php";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
myFunction(myArr);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
var out = "";
var i;
for(i = 0; i < arr.length; i++) {
out += arr[i].id;
}
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli('localhost', 'root', '', 'cms');
$result = $conn->query("SELECT* FROM materials");
$o = null;
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$o[] = $rs;
}
$conn->close();
echo json_encode($o);
При таком раскладе, все ок, результат json можно разобрать и преобразовать в объект-сущности. Результат данного скрипта - 1234567...номера ID столбцов вообщем.
Но как только в серверном файле указать include 'test.php' в котором ничего кроме 'echo 'простого текста';' нету, ajax отказывается возвращать предыдущий результат и возвращает echo включенного файла.