Emmm... se agradeceria que ocuparas las etiquetas para envolver el codigo ya que es mas legible
Si logro visualizar bien, el alert que pones te muestra el valor como corresponde cierto? es decir, DESC o ASC segun lo que seleccione.
Si es asi entonces prueba esto
Código:
$.post('index.php?controlador=producto&accion=categoria',{'order':val},function(data){
if(data=='error'){ // cuando lso datos son incorrectos
...
Lo unico que estamos diciendo, es que le enviamos por POST la variable "order" con el valor de val
Al otro lado lo recuperamos
Código:
if(isset($_POST['order']))
$order=$_POST['order'];
else
$order='ASC';
Te recomiendo que ocupes el complemento de firefox, llamado firebug, para ver en la pestaña consola que envia al hacer la llamada por ajax, es decir, que parametros envia
Saludos