Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving Ajax Form Data Best Practices

I am just wondering what general best practice is for saving data in Ajax Forms. In Spree ECommerce for example, every time you change a value in a list of objects (say you change the quantity of a certain Item in an Order), it updates the database with an Ajax call.

Is it better to have the User manually press "Save" or "Update" when they're done editing a form, or if you can (you have setup an ajax alternative), to just automatically save the data every time something changes?

It seems like Stack Overflow Careers saves a "Draft" of your profile every few seconds using some ajax thing.

As such, it seems like there's 3 ways to save data in a form if you have Ajax going:

  1. User presses button, saves all data at once, not good if data is important
  2. Save every time interval
  3. Save every change

What do you recommend?

like image 358
Lance Avatar asked Feb 15 '10 19:02

Lance


2 Answers

Good question. I don't think there's a one-size-fits-all best-practice that covers all situations. Generally, the more user-friendly your solution is, the greater the complexity of implementation, the less likely the potential for a proper gracefully degrading solution (unless you have been very, very careful).

Also, there are implications to whichever approach you have opted to go with. For example, autosaving periodically might not be a good idea where substantial data validation is involved. A user might type some stuff in, and get an error message after a few seconds. Instant feedback would be much more beneficial to the user in such a situation, as it is possible that the input which led to the failed validation was, say, a few actions ago, so it might be somewhat confusing to the user.

Saving whenever the user changes something (a keypress, a checkbox selection, etc.) would seem to be the way to go from a usability perspective, but again, it depends on what you are doing and could have negative side-effects. For example, if the user is on a slow connection, he/she might feel that your site is slow or buggy. It would also yield a lot more database queries than the old-school 'click save' method.

I guess an obvious way to get around some of the above caveats would be to incorporate on-the-spot client side validation, but what works in the end might well be down to what your hallway testers say.

Final recommendation: create the old-style 'click save to save' forms and enhance from there, making sure things don't break without javascript (unless you have express permission from a higher authority). Hope that wasn't all nonsense.

like image 182
karim79 Avatar answered Sep 28 '22 05:09

karim79


It all depends on the situation. If the form is going to change due to user input then you may be better served save/update form on every change. Otherwise wait for an explicit user action.

I can only see trouble on the horizon if you adopt an autosave strategy for a form..

like image 34
Sky Sanders Avatar answered Sep 28 '22 03:09

Sky Sanders