sorry for keeping posting about this. I am just totally stuck. I am sure that I am missing something very basic. Here is the complete code:
<form action="{{=URL('credit_card_saved')}}" method="post" id= "payment-form2"> <button>Submit</button> </form> <script> function CustomizeFormSubmission2(event) { event.preventDefault(); var form = document.getElementById('payment-form2'); var element = document.createElement('input'); element.setAttribute('type', 'hidden'); element.setAttribute('name', 'stripeToken'); element.setAttribute('value', "THIS_IS_TOKEN"); form.appendChild(element); form.submit(); } var form = document.getElementById('payment-form2'); form.addEventListener('submit', CustomizeFormSubmission2); So when this is placed in the view straight - it's perfect. Behaves as expected. However, if it's placed into the component via LOAD, it grossly malfunctions. Not only the post_vars is empty, but even event.preventDefault(); doesn't work either (if I remove form.submit, it's still immediately submitting the form). What am I missing about how LOAD is expected to operate?? How do I make it work?? On Friday, May 31, 2019 at 3:41:14 PM UTC-4, Vlad wrote: > > I've narrowed down what's going on, but still stuck... > > this is how the form is being submitted (from inside of the component): > > function stripeTokenHandler(token) { > var form = document.getElementById('payment-form'); > var hiddenInput = document.createElement('input'); > hiddenInput.setAttribute('type', 'hidden'); > hiddenInput.setAttribute('name', 'stripeToken'); > hiddenInput.setAttribute('value', token.id); > form.appendChild(hiddenInput); > form.submit(); > } > > it seems to me that document.createElement('input') doesn't create an > element under the topmost document (I don't really understand this well, > but when this code is in the main html - not in the component- it works > correctly and submits the proper data to the form action url) > > I just can't think of anything else here - those variables that are > hardcoded in the form, i.e. not submitted via created on the fly in input > fields - are passed over correctly. > > Greatly appreciate some help... > > On Friday, May 31, 2019 at 2:38:06 PM UTC-4, Vlad wrote: >> >> I am loading a component with LOAD. the component has the form on it. the >> form is submitting via post method. >> >> request.post_vars is empty. the variables don't go through. >> >> when I copy the same very code and pasting it in the view (i.e. instead >> of the LOAD component - while taking the LOAD line out) - with not even a >> single change, just copy and paste - >> request.post_vars is correct - filled with whichever parameters are >> coming from the form. >> >> is this a feature or a bug? :) >> >> is there something subtle I am missing about those components? I've tried >> both - loading the component with ajax true and ajax false - same thing. >> And the same thing happens when I tried to submit with get method. >> >> Other than not having vars set - everything else functions right. The >> form is submitted... >> >> Any ideas? >> >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/68fd1775-6626-42e0-9ed3-2222a71753ad%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.