Показать сообщение отдельно
  #1 (permalink)  
Старый 28.03.2018, 10:48
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Вывод сводных данных из базы в формате json
Здравствуйте, уважаемые программисты!

Делаю свои первые шаги в изучении php и в работе с базами данных.
Данные в базу отправляю так:
на странице (назовем скрипт №1):
data_surv["age"] = encodeURIComponent("Мужской");
data_surv["sex"] = encodeURIComponent("20-30 лет");

jQuery.ajax({
	type: "POST",
	url: "response.php", 
	dataType:"text",
	data:data_surv,
	success:function(response){
		$("html, body, .main").css("cursor", "default");
	},
	error:function (xhr, ajaxOptions, thrownError){
		alert(thrownError); //выводим ошибку
	}
});

в response.php (№2):
<?php
//подключаем бд
include_once("config.php");
$age = filter_var($_POST["age"],FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$sex = filter_var($_POST["sex"],FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
if( mysql_query("INSERT INTO test_table(age, sex) VALUES('".$age."','".$sex."')") ){
	$my_id = mysql_insert_id();
	mysql_close($connecDB);
}else{
	header('HTTP/1.1 500 could not insert record!');
	exit();
}
?>


Получаю данные так:
на странице (№3):
$.ajax({
	type: "POST",
	url: "pivot_data.php",
	dataType: "json",
	success: function(data) {
		console.log(data);
	},
	error: function(error){
		console.log(JSON.stringify(error));
	}
})


в pivot_data.php (№4):
<?php
//Наша БД
include_once("config.php");

$i=0;
$data = mysql_query("SELECT * FROM test_table");
if (!$data) {
    //$result['error'] = 'Ошибка запроса: ' . mysql_error();
	//echo json_encode($result);
    exit;
}
while($row = mysql_fetch_array($data)){
	$sex[$row["sex"]]++;
	$age[$row["age"]]++;
	$i++;
}

mysql_close($connecDB);
$result['records'] = $i;
$result['chart1'] = $sex;
$result['chart2'] = $age;

echo json_encode($result);
?>


Скрипт №3 возвращает ошибку:
{  
   "readyState":4,
   "responseText":"{\"records\":4,\"chart1\":{\"%D0%96%D0%B5%D0%BD%D1%81%D0%BA%D0%B8%D0%B9\":2,\"%D0%9C%D1%83%D0%B6%D1%81%D0%BA%D0%BE%D0%B9\":2},\"chart2\":{\"25-34\":2,\"15-24\":1,\"45-54\":1},}",
   "status":200,
   "statusText":"OK"
}

Если в скрипте №3 поменять dataType на text, то все нормально возвращается.
Я думала, раз текстов выводится, то можно тогда вернуть JSON.parse(data). Но так тоже ошибка появляется:
Uncaught SyntaxError: Unexpected token  in JSON at position 0
Подскажите пожалуйста, в чем может быть ошибка?

Последний раз редактировалось Manyasha, 28.03.2018 в 10:59.
Ответить с цитированием