Можно, но только не непосредственно в функцию, а в вызов функции как ее аргументы. Для этого и существуют параметры запроса, но:
1) оперировать непосредственно именами таблиц и ее полей не стоит, это небезопасно, пусть параметры, это имена, а в базе эти имена имеют префикс, который сервер подставит;
2) обязательно проверять действительность имен;
3) ну конечно обязательно экранировать значения параметров.
Чтобы таким образом выполнить кардинально разные задачи требующие отдельных функций, можно использовать тот же switch, а можно и массив функций, в последнем случае примерно так:
а) запрос клиента содержит два первичных ключа - первый требуемая функция, второй, это массив параметров передаваемых в нее:
//скобки совсем не нужны
data: "job=fun_1&arg[table]="+cat_table+"&arg[field]="+cat_field+"&arg[value]="+hidden+"&arg[id]="+cat_id,
на сервере:
$job = [
'fun_1' => function(array $arg) {
//проверяем действительность передаваемых имен и добавляем им префиксы
//запрос и возврат
},
'fun_2' => function(array $arg) {
//....
}
];
if(isset($_POST['job']) && array_key_exists($_POST['job'], $job)) $result = $job[$_POST['job']]($_POST['arg']);
б) у сервера нет никаких td и подобного, это ваша задача отождествлять поля sql-таблицы с колонками html-таблицы, и если разные таблицы и запросы, но схожие при этом задачи (пусть отображения), то может и не потребуется на сервере для каждой своя функция, все можно решать и в одной, что и откуда как раз и будут задавать параметры запроса клиента.