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.

Reply via email to