Question: How can I program the same form to submit multiple queries, and then show each response in a different frame?
In JavaScript, theonClick
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:
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
10/5/96