I remember tinkering with invisible frames, but went pretty quickly to Java applets, which could open sockets (back to the origin server, anyway) and handle plain old HTTP from right within the page.
Getting an attractive UI was rough going, but I wasn't much worried about that at the time...
An applet could also make JavaScript calls, so it was also possible to pass data back into JavaScript on the page. That was a technology that came from Netscape, but MS copied -- so (strangely enough) there was a Java package included in Microsoft's jview distribution that had "com.netscape.livescript" (something like that) in the name.
Getting an attractive UI was rough going, but I wasn't much worried about that at the time...
An applet could also make JavaScript calls, so it was also possible to pass data back into JavaScript on the page. That was a technology that came from Netscape, but MS copied -- so (strangely enough) there was a Java package included in Microsoft's jview distribution that had "com.netscape.livescript" (something like that) in the name.