I typically do it the first way you describe—redirect only in the event of a successful submission. It’s hard to see a real use case for bookmarking a form containing invalid data; on the other hand it often makes sense to bookmark a confirmation page (after successful submit).