Yes, all this is very much correct. I have had the dubious pleasure of doing a fair amount of this sort of thing via the hidden frame.
A couple of important points to be on the look-out for:
The loading of the cgi script in the hidden frame can be thought of as occuring in a different 'thread' if you will.
or else you'll be reloading your own frame which is exactly what you wanted to avoid!
<- document.location.href = newurl;
-> parent.**hiddenJSframesNameHere**.document.location.href = newurl;
(escape performs URI-escaping... for similar stuff in perl, look at URI::Escape)
var newurl = "http...pl?field=" + escape(field) + "&value=" + escape(v
--a (hopefuly) helpful perl web-junky