Another means of doing this is server-push, last I checked it was only supported by Netscape though (it uses the multipart/x-mixed-replace MIME-type).
A different method, for IE, is to use client-pull with the active-x object Microsoft.XMLHTTP
. As bad as A-X is security wise, this one seems the most benign.
Of course, this requires some client-sever communication: Either you need to separate all of your subs, and call each cgi separately, or pass a q-string down to the server and route the cgi execution based on the parameter:
var httpObj = new ActiveXObject('Microsoft.XMLHTTP');
//httpObj.responseText contains the returned html.