спасибо за наводку. вопрос решился.
собственно вернул строку таким образом
echo json_encode(var_dump($arr));
увидел в отладчике что пришли данные вместе с названиями (то бишь убедился что запрос правильно работает и проблема в формате передаваемых данных).
Изменил кодировку всех файлов на UTF-8 - заработало всё.
Собственно я предполагал что проблемы в кодировке могу быть, но думал что будут хотя бы кракозябры возвращаться. а тут null возвращалось. это смутило.