The result of the overlay.getExtent() is not equal the GetBoundingBox in server side.
If you pan the map and alert(overlay.getExtent()) you can see its value get changed always.
So if you want to zoom to target extent, please build it and call this API for example:
var extent = new OpenLayers.Bounds(30, -95, 78, -60);
I think this topic maybe helpful.