
14.04.2012, 20:22
|
Кандидат Javascript-наук
|
|
Регистрация: 23.04.2010
Сообщений: 105
|
|
формат JSON ответ сервера
Ответ сервера приходит в формате JSON.Но приходят два объекта в таком плане
{"0":"1","nomer":"1","1":"2012-04-11","date":"2012-04-11","2":"4","month":"4","3":"2012","year":"2012","4":"hello 4","note":"hello 4"}
{"0":"7","nomer":"7","1":"2012-03-14","date":"2012-03-14","2":"3","month":"3","3":"2012","year":"2012","4":"hello3","note":"hello3"}
Функция eval не справляется для обработки запроса -вставки данных на страницу
var answer= eval("(" + request.responseText + ")");
Как поступить в таком случае
|
|

14.04.2012, 21:19
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от aleks_lv
|
Как поступить в таком случае
|
Предавать данные в формате JSON.
То, что вы привели в примере,это не JSON.
Не помню название функции в РНР приводящей хеши к подобному строковому виду.
А для чтоб это расшифровать пишите свой парсер.
Последний раз редактировалось dmitriymar, 14.04.2012 в 21:25.
|
|

14.04.2012, 21:45
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Не,не сериализация.
|
|

14.04.2012, 21:51
|
Лаборант :-)
|
|
Регистрация: 08.11.2011
Сообщений: 806
|
|
|
|

14.04.2012, 22:02
|
Лаборант :-)
|
|
Регистрация: 08.11.2011
Сообщений: 806
|
|
похоже на два отдельных объекта json
если их обрамить квадратными скобками и поставить между ними запятую, то получится массив из двух объектов
var str = '[{"0":"1","nomer":"1","1":"2012-04-11","date":"2012-04-11","2":"4","month":"4","3":"2012","year":"2012","4":"hello 4","note":"hello 4"},{"0":"7","nomer":"7","1":"2012-03-14","date":"2012-03-14","2":"3","month":"3","3":"2012","year":"2012","4":"hello3","note":"hello3"}]';
var arr = JSON.parse(str);
alert(arr[0].date);
|
|

14.04.2012, 22:15
|
Кандидат Javascript-наук
|
|
Регистрация: 23.04.2010
Сообщений: 105
|
|
Код:
|
json_encode($rows) ; |
вот это PHP функция
|
|

14.04.2012, 22:26
|
Лаборант :-)
|
|
Регистрация: 08.11.2011
Сообщений: 806
|
|
может быть json_encode просто выполнился два раза и выдал две отдельных строки в формате json ?
|
|

14.04.2012, 22:40
|
Кандидат Javascript-наук
|
|
Регистрация: 23.04.2010
Сообщений: 105
|
|
Код:
|
............
$select="SELECT * FROM data WHERE month='$month' AND year='$year'";
$res=mysql_query($select);
if( mysql_num_rows ($res))
while($rows=mysql_fetch_array($res))
{
echo json_encode($rows) ;
} |
Происходит выборка с базы данных ..выбирается 2-10строк и отправляется в клиентскую часть и приходит ,если 2 строки выбрано -то 2 объекта ,3-то 3 объекта..когда одна строка ,то проблем нима..функция eval и данные на страницу...а как когда чытыре объекта приходит...
|
|

14.04.2012, 22:51
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
str='{"0":"1","nomer":"1","1":"2012-04-11","date":"2012-04-11","2":"4","month":"4","3":"2012","year":"2012","4":"hello 4","note":"hello 4"}';
var arr = JSON.parse(str);
alert(arr.date);
var str='{"0":"1","nomer":"1","1":"2012-04-11","date":"2012-04-11","2":"4","month":"4","3":"2012","year":"2012","4":"hello 4","note":"hello 4"}';
var arr = JSON.parse(str);
alert(arr.0);
var str='{"0":"1","nomer":"1","1":"2012-04-11","date":"2012-04-11","2":"4","month":"4","3":"2012","year":"2012","4":"hello 4","note":"hello 4"}';
var arr = eval("(" +str+ ")");
alert(arr["0"]);
arr = JSON.parse(str);
alert(arr["0"]);
Разница понятна?
У вас не JSON.
При преобразовании подобного набора данных (хеша) средствами js в json, вы получите строки абсолютно по другому выглядящие
Сообщение от aleks_lv
|
Происходит выборка с базы данных ..выбирается 2-10строк и отправляется в клиентскую часть и приходит ,если 2 строки выбрано -то 2 объекта ,3-то 3 объекта..когда одна строка ,то проблем нима..функция eval и данные на страницу...а как когда чытыре объекта приходит...
|
Ну как это нет проблем? Вы абсолютно не представляете себе что такое ясон и его формат. А чтоб работало-отсылайте массив объектов где элементы массива это массивы(объекты )собранные из данных строк.
Последний раз редактировалось dmitriymar, 14.04.2012 в 23:07.
|
|
|
|