Все просто. Чтобы преобразовать массив в JSON, на стороне сервера используй ф-ю json_encode(). А на стороне клиента преобразуй его в объект и работай как с объектом JavaScript.
Например, ты отправляешь Ajax запрос на сервер, а там выполняется примерно вот такой код:
<?php
$array = array(
array(
'title' => 'Заголовок 1',
'desc' => 'Описание 1'
),
array(
'title' => 'Заголовок 2',
'desc' => 'Описание 2'
),
array(
'title' => 'Заголовок 3',
'desc' => 'Описание 3'
)
);
exit(json_encode($array));
При этом сервер тебе вернет вот это:
[{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 1"},{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 2"},{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 3"}]
Затем в клиенте обрабатываешь пришедшие данные вот такой конструкцией:
var parseJSON = (window.JSON && JSON.parse) ? function (obj) {
try { return JSON.parse(obj); } catch (e) {
return eval('('+obj+')');
}
} : function(obj) {
return eval('('+obj+')');
};
Здесь проверяется, поддерживает ли браузер метод JSON.parse. Если да - данные обрабатываются им. Если нет - то eval().
Например покажу на примере работы моего самописного аякс-объекта:
Ajax.get('/server.php', function(http_request){
// распарсили полученные данные
var data = parseJSON(http_request.responseText);
// посчитали размер объекта
var count = data.count;
// перебрали объект
for(var i=0; i<count; i++) {
// алерт отдаст "Заголовок1 Описание1"
alert(data[i]['title']+'\n'+data[i]['desc']);
}
});
Либо так:
// отправили запрос
Ajax.get('/server.php', function(http_request){
// распарсили полученные данные
var data = parseJSON(http_request.responseText);
// напрямую обратились к массиву
// алерт отдаст "Заголовок2 Описание2"
alert(data[1]['title']+'\n'+data[1]['desc']);
});