advertisement -- please support sponsors

forms, frames:
showing multiple query results in different frames

Question: How can I program the same form to submit multiple queries, and then show each response in a different frame?

In JavaScript, the onClick event handler can be used to control many aspects of form submission. For example, the following code might be used to submit the same form data to two different servers:
<input type=submit onClick=" form . action = 'first_URL' form . target = 'first_frame' form . submit (); form . action = 'second_URL'; form . target = 'second_frame'; form . submit (); return false; ">
In this example, before each invocation of the form's submit method, the action property is defined so that each call to the submit method sends the query data to a different server. Similarly, the target property is configured so that the the servers' responses are shown in separate frames. This event handler code returns a false value to prevent the interpreter from submitting the form for a third time. (The current JavaScript specification says that the form should automatically submit after the event handler finishes, unless false is explicitly returned.) Of course, we could also have omitted both the second submit call and the return statement to achieve the same result.)

Unfortunately, on the (Windows 95) browsers that I tested, the code shown above does not perform the way it should. This is partly due to the fact that the on-going browser war between Netscape and Microsoft has caused both companies to rush production, and hence release imperfect implementations of JavaScript.

Internet Explorer 3.0 fails because it does not support assignment to the form object's action and target properties. On the other hand, Netscape Navigator 3.0 supports the assignment, but does not properly handle multiple calls to the submit method. The reason for this is that Netscape does not actually issue the HTTP request until after the interpreter has returned from the event handler. As a result, on Netscape only the last in a series of calls to the submit method works correctly.

Not all is lost. There are probably many ways to work around this problem. For example, if you have any control over the contents returned by the servers you are querying, then you might be able to include an onLoad event handler with the first server's response, so that when it is loaded, it resubmits the form to the second server. This is a rather difficult kludge, but it is definitely possible.

Charlton Rose