Le hoquet c'est à cause du muscle, le diaphragme, qui se contracte et se décontracte sous les poumons pour réguler la respiration.
Mais comme il se trouve près de l'estomac, si ce dernier se contracte, il influe directement sur le diaphragme qui lui-même touche les poumons, ce qui donne le hoquet. Raison pour laquelle on l'a généralement après manger ;-)
Pour l'oignon je l'ai lu il n'y a pas longtemps, c'est une enzyme (libérée au moment de la coupe) qui change une molécule en une autre, qui est volatile et qui irrite l'il.