Как-то так, но возможны ошибки, не тестил:
function remove_categ(id_categ){
// ОБРАБОТКА ЗАПРОСОВ К СКРИПТУ ПО ОДНОМУ
// выводим надпись в блоке результатов
document.getElementById('script_results').innerHTML = 'Переносим в ' + id_categ + ' следующие категории:<br />';
// создаем XMLHttpRerquest запрос
var request_remove;
try { request_remove = new XMLHttpRequest(); }
catch (er) {
try { request_remove = new ActiveXObject("MSXML2.XMLHTTP"); }
catch (er) {}
}
if (!request_remove) { alert("Error initializing XMLHttpRequest!"); return; }
// обращение к php скрипту
var url = "remove_category.php", params = [];
// создаем цикл по всем чекбоксам
for (var r = document.getElementsByName('remove_checkbox'), j = 0, l = r.length; j < l; j++) {
// если чекбокс выделен выполняем следующее
if (r[j].checked) params.push(['kuda[', escape(r[j].value), ']=', escape(id_categ)].join(''));
}
request_remove.open("POST", url, true);
request_remove.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');
request_remove.onreadystatechange = function() {
// если ответ есть обновляем содержимое в блоке результатов
if (request_remove.readyState !== 4) return;
if (!(request_remove.status >= 200 && request_remove.status < 300)) alert('Error sending data.');
else document.getElementById("script_results").innerHTML = request_remove.responseText;
request_remove.onreadystatechange = alert; // устраняем memory leak
};
request_remove.send(params.join('&'));
};
в пхп прийдет массив kuda с ключами kakoi.