Я не передаю никаких параметров, просто получаю файл (в данном случае). Но даже сейчас я упростил задачу, указав в серверном файле не включение другого файла (как ранее), а простой вывод (echo 'text'), в данном случае ajax возвращает этот самый ECHO, а результат json_encode($o); игнорирует.
Может быть, это связано с тем, что ajax в манипуляциях с json, может возвращать либо JSON-формат, либо ЛЮБОЙ другой результат, как в случае с echo. Простой пример :
1. При таком раскладе все работает.
<!DOCTYPE html>
<html>
<body>
<div id="id01"></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].small;
}
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
$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); // возвращает то, что нужно
однако стоит изменить серверный файл вот так
echo json_encode($o);
echo 'text';
все отказывается работать. Результат - не возвращает ничего.
НО. если возвращать данные не в json-формате - все ОК
<html>
<body>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "testphp.php";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("id01").innerHTML = 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].small;
}
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
$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();
print_r($o); // array
echo 'text'; // выводит