Fix form handling for user feedback

issue was noticed on demo site, but possibly existed elsewhere?  also not 100%
sure about this fix, but it's believed to be okay...
This commit is contained in:
Lance Edgar 2019-08-04 22:14:15 -05:00
parent 287464362e
commit fda7230bce
2 changed files with 14 additions and 12 deletions

View file

@ -918,16 +918,13 @@ class Form(object):
if self.request.method != 'POST': if self.request.method != 'POST':
return False return False
# we assume data is in the form of POST params # use POST or JSON body, whichever is present
controls = self.request.POST.items() # TODO: per docs, some JS libraries may not set this flag?
# https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.is_xhr
# but if not, we can try to parse request body as JSON if self.request.is_xhr:
if not controls:
try:
controls = self.request.json_body.items() controls = self.request.json_body.items()
except ValueError: else:
# not a valid JSON body, so no data controls = self.request.POST.items()
controls = []
dform = self.make_deform_form() dform = self.make_deform_form()
try: try:

View file

@ -27,8 +27,13 @@ let FeedbackForm = {
} }
this.$http.post(this.action, params, {headers: headers}).then(({ data }) => { this.$http.post(this.action, params, {headers: headers}).then(({ data }) => {
this.showDialog = false if (data.ok) {
alert("Message successfully sent.\n\nThank you for your feedback.") alert("Message successfully sent.\n\nThank you for your feedback.")
this.showDialog = false
} else {
alert("Sorry! Your message could not be sent.\n\n"
+ "Please try to contact the site admin some other way.")
}
}) })
}, },
} }