Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: User Interface Design
Expertise: Beginner
Mar 19, 1997

How can I program a form to submit multiple queries and show each response in a

How can I program a form to submit multiple queries and 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=&quot; form . action = 'first_URL' form . target = 'first_frame' form . submit (); form . action = 'second_URL'; form . target = 'second_frame'; form . submit (); return false; &quot;>
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 a third time. (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 I tested, the code shown above does not perform the way it should. This is due in part to the fact that the ongoing browser war between Netscape Communications and Microsoft has caused both companies to rush production and thus 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. Netscape Navigator 3.0 supports the assignment but does not properly handle multiple calls to the submit method, because Netscape does not issue the HTTP request until after the interpreter has returned from the event handler. As a result, 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, 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 possible.

Or you could wait for Microsoft and Netscape to finish debugging their JavaScript interpreters... :-)

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date