AJAX es asincrónico. Tu código es ejecutado de arriba hacia abajo por el navegador. Al llegar al pedido de AJAX, no espera terminar para seguir. Sigue de todas formas. Esto causa que esta línea falle:
Código Javascript
:
Ver originaldocument.getElementById('cb_pregunta').value = trim(respuesta.getElementsByTagName('pregunta').it em(0).firstChild.data);
Falla pues el elemento no existe. Cuando colocás el alert simplemente introdujiste una demora que le da tiempo a AJAX a finalizar.
Por algo $.post() tiene un parámetro para una función que se ejecute al finalizar el pedido. Lo estás haciendo ahí al llenar el combo. Simplemente poné esa línea dentro de la función.
Otra cosa, por qué:
Código Javascript
:
Ver originaldocument.getElementById('cb_pregunta')
y no:
Digo... si ya estás usando jQuery...