I’m working on a web app that simplifies data entry for my job. I’ve built a web page with a long form that allows users to add/delete certain fields. For example, to include multiple e-mail addresses there is a button that uses JQuery to add another input to the page (as well as a button to remove that input).
My question is really just a high level, conceptual question, not really about implementation.
A user completes the form and has multiple e-mail addresses and other fields. The form data is sent to the server and stored in a database. When the user comes back later, they want to pull up a page with all the data that they input. This is where it gets tricky for me: when the data is originally INPUT by the user the extra fields are added with javascript, but when the user comes BACK to the page later, the page is built with Java (I’m using the play framework, by the way) based on a template and the data in the database. But what happens if, for example, the template that the server uses to create the page his a different name/class/ect for the additional inputs than the name/style/etc included in the JQuery append() function. Any time that the page is modified by Javascript, isn’t there the possibility that the changes won’t be reflected when the page is served up again?
If the javascript and the java have different versions of the HTML, then the original input page and the page that the user sees when they come back to it might be different. Are there any common approaches to this problem, other than just being very careful? Maybe there is some way to store the ENTIRE page, HTML and all and just serve that back? I’ve searched and searched for some kind of programming paradigm that explains how to approach this but so far I’ve failed.
Thanks for your time, hopefully I’m not the only person wondering this.
I would design the page so that the webpage is always generated asynchronously with Ajax. That way you have one job performed with one bit of code, instead of two entirely separate bits of code that do the same job.
Of course, you can have the Java generate the page template that will load the javascript and send the Ajax data.