ghaiklor
Новичок
Привет всем.
Столкнулся с проблемой такого характера. Скриптом генерирую JSON-строку на сервере. Этот скрипт пинаю AJAХ-запросом. Запрос выполняется, в файрбаге вижу ответ от скрипта - эту самую JSON-строку. Эту строку проверяю на валидаторе - все верно сформировалось. Но на ответе AJAX-запроса срабатывает onError с ошибкой "parse error: Syntax Error: JSON parse: bad control character in string literal".
Перегуглил уже кучу страниц, испробовал кучу методов, но все остается таким же.
В чем может быть проблема?
Функция, которая составляет запрос AJAX и парсит данные.
Сам скрипт на сервере, который генерит JSON-строку
Столкнулся с проблемой такого характера. Скриптом генерирую JSON-строку на сервере. Этот скрипт пинаю AJAХ-запросом. Запрос выполняется, в файрбаге вижу ответ от скрипта - эту самую JSON-строку. Эту строку проверяю на валидаторе - все верно сформировалось. Но на ответе AJAX-запроса срабатывает onError с ошибкой "parse error: Syntax Error: JSON parse: bad control character in string literal".
Перегуглил уже кучу страниц, испробовал кучу методов, но все остается таким же.
В чем может быть проблема?
Функция, которая составляет запрос AJAX и парсит данные.
PHP:
function T_addElementsMonitoring() {
function onLoaded(data)
{
data = jQuery.parseJSON(data);
var monitoring_units_target_tbody = document.getElementById('monitoring_units_target').getElementsByTagName('tbody')[0]; //считываем блок tbody
T_clearElementsMonitoring(); //очищаем таблицу от данных
var i = 0;
while (i < data.length) {
var tr = document.createElement('TR'); //создаем дочерний элемент для вставки в таблицу
var T_testString = "/*здесь идет HTML-разметка*/";
tr.innerHTML = T_testString;
monitoring_units_target_tbody.appendChild(tr); //добавить чилда в блок tbody
i++;
}
}
function onError(xmlHttpRequest, textStatus, errorThrown) {
if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0) {
return;
} else {
ajaxerrmess("Error: " + textStatus + ' ' + errorThrown);
}
}
$.ajax({
type: 'GET',
data: {
type: 1
},
url: "ajx/db_getData.php",
dataType: 'json',
success: onLoaded,
error: onError,
cache: false
})
}
PHP:
<?php
session_start();
require ('../inc/config.php');
$user = '';
$pass = '';
$host = '';
$core = '';
$json_string = array();
try {
mysql_connect($host, $user, $pass);
@mysql_select_db($core) or die("Can't select database");
} catch (Exception $e) {
die("Can't connect: " . $e->getMessage());
}
try {
$query = "SELECT * FROM CarsOnlineData";
$result = mysql_query($query);
$num = mysql_num_rows($result);
mysql_close();
$i = 0;
while ($i < $num) {
$id = mysql_result($result, $i, "id");
$carId = mysql_result($result, $i, "carID");
$carLatitude = mysql_result($result, $i, "CarLatitude");
$carLongitude = mysql_result($result, $i, "CarLongitude");
$carCourse = mysql_result($result, $i, "CarCourse");
$carSpeed = mysql_result($result, $i, "CarSpeed");
$carParkTime = mysql_result($result, $i, "CarParkTime");
$json_string[$i]['id'] = $id;
$json_string[$i]['carId'] = $carId;
$json_string[$i]['carLatitude'] = $carLatitude;
$json_string[$i]['carLongitude'] = $carLongitude;
$json_string[$i]['carCourse'] = $carCourse;
$json_string[$i]['carSpeed'] = $carSpeed;
$json_string[$i]['carParkTime'] = $carParkTime;
$i++;
}
} catch (Exception $e) {
die("Can't get data: " . $e->getMessage());
}
if (!function_exists('json_encode')) {
function json_encode($data) {
switch ($type = gettype($data)) {
case 'NULL':
return 'null';
case 'boolean':
return ($data ? 'true' : 'false');
case 'integer':
case 'double':
case 'float':
return $data;
case 'string':
return '"' . addslashes($data) . '"';
case 'object':
$data = get_object_vars($data);
case 'array':
$output_index_count = 0;
$output_indexed = array();
$output_associative = array();
foreach ($data as $key => $value) {
$output_indexed[] = json_encode($value);
$output_associative[] = json_encode($key) . ':' . json_encode($value);
if ($output_index_count !== NULL && $output_index_count++ !== $key) {
$output_index_count = NULL;
}
}
if ($output_index_count !== NULL) {
return '[' . implode(',', $output_indexed) . ']';
} else {
return '{' . implode(',', $output_associative) . '}';
}
default:
return ''; // Not supported
}
}
}
echo json_encode($json_string);
?>