form's field having special characters transmitted via request.post_vars

32 views
Skip to first unread message

Vlad

unread,
Jun 20, 2019, 1:32:08 PM6/20/19
to web2py-users
I have a form with an input text field. 

The form is submitted via POST. 

The vars value is read and passed over into response.js to run some action. 

All works perfect until that field has special characters, like " and the like. Javascript does't like it. It doesn't see that as a string, but rather as a part of the js code so it breaks. 

How do I encode / convert that field's value so that it wouldn't affect html/js on the output? 

Val K

unread,
Jun 20, 2019, 2:52:12 PM6/20/19
to web2py-users
I think there is no universal way because js is just a string in python context, 
you have to escape quotes with backslash (replace " with \") where it is required to prevent crumbling strings in  js-code 
What is the second char? dot?  

Eliezer (Vlad) Tseytkin

unread,
Jun 20, 2019, 2:54:43 PM6/20/19
to web...@googlegroups.com
the problem is that I don't know what they may enter, it could be anything. 
I just need to feed back whatever they entered in the middle of some js action. 
the objective is that whatever they enter - any characters - should simply be taken as a string by the browser


--
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/fSTMUW9ObVU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web2py+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/254be43e-4d76-4b33-ab2b-7434eaad85b8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Val K

unread,
Jun 20, 2019, 3:09:27 PM6/20/19
to web2py-users
Enter code here...

Eureka! there is json!
safe_js_str = json.dumps(string_with_any_bad_char)

now you can insert it in js code as 
'var s = %s' % safe_js_str # it is already quoted  



On Thursday, June 20, 2019 at 9:54:43 PM UTC+3, Vlad wrote:
the problem is that I don't know what they may enter, it could be anything. 
I just need to feed back whatever they entered in the middle of some js action. 
the objective is that whatever they enter - any characters - should simply be taken as a string by the browser


On Thu, Jun 20, 2019 at 2:52 PM Val K <valq...@gmail.com> wrote:
I think there is no universal way because js is just a string in python context, 
you have to escape quotes with backslash (replace " with \") where it is required to prevent crumbling strings in  js-code 
What is the second char? dot?  
 

On Thursday, June 20, 2019 at 8:32:08 PM UTC+3, Vlad wrote:
I have a form with an input text field. 

The form is submitted via POST. 

The vars value is read and passed over into response.js to run some action. 

All works perfect until that field has special characters, like " and the like. Javascript does't like it. It doesn't see that as a string, but rather as a part of the js code so it breaks. 

How do I encode / convert that field's value so that it wouldn't affect html/js on the output? 

--
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/fSTMUW9ObVU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web...@googlegroups.com.

Eliezer (Vlad) Tseytkin

unread,
Jun 20, 2019, 3:25:07 PM6/20/19
to web...@googlegroups.com
Oops! 
this is brilliant! 
Thank you!!  

I just had to introduce one extra step due to the way how json dumps strings: 

if string.startswith('"') and string.endswith('"'):
    string = string[1:-1]



To unsubscribe from this group and all its topics, send an email to web2py+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/98cd6c0e-d7c2-4e48-bfa1-5316be115b94%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages