Me parece que no copiaste tal cual el código porque, en la condición, no insertas el valor del checkbox en el arreglo.
En teoría, una lógica como esta debería ser suficiente:
Código Javascript
:
Ver originalvar data = [],
xhr= new nuevoAjax();
[].forEach.call(document.querySelectorAll("[name=caja]"), function(checkbox){
checkbox.checked && data.push(checkbox.name + "=" + checkbox.value);
});
xhr.open("POST", ruta);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(data.join("&"));
xhr.addEventListener("load", function(){
this.status == 200 && console.log(this.responseText);
}, false);
Se recorre al conjunto de checkbox y se añade al arreglo el par "nombre=valor" de cada checkbox marcado. Finalmente, se envía la información mediante una petición asíncrona (AJAX) y se visualiza la respuesta del servidor en la consola del navegador.