В обработке ответа используйте goto
if(typeof a==='undefined')
throw 'Свойство "а" не пришло из PHP!';
конструкция банальная
try {
// тут получаете json из responseText или типа того
if(typeof a==='undefined')
throw 'Свойство "а" не пришло из PHP!';
}
catch(e) {
alert('Ошибка! Подробности в консоли...');
console.log(e);
console.log('========= response was ==========');
console.log(link.responseText);
// ну и по интересу что еще хочется вывести
}
Разумеется уловятся вообще любые ошибки (слава js у которого нет сегрегации категоризации ерроров и прерываний), например если вместо json вывалится текст сообщения об ошибке из php - его там и увидите, в консоли.