I am not sure about the overhead of SQLFORM but it goes through the logic of generating the HTML for even if you do not need it.
The result you are getting is odd. What database are you using? What is the model? Is it possible your table does not have an auto increment id field? On Saturday, 2 August 2014 03:50:24 UTC-5, desta wrote: > > Hi Massimo and thank you for the reply. A couple of questions > 1) What are the associated overheads of SQLFORM? > 2) I tried the code you suggested but unfortunately I have the same > behavior. > > If I use > return 'NOTOK' if r.errors else str(r.id) > I get nothing as a response, see here http://i.imgur.com/Rs2YVeq > > If, on the other hand, I use > return 'NOTOK' if r.errors else str("OK") > I get the response correctly, see here http://i.imgur.com/Svk8ESQ > > 3) If I use the JSON return as you suggest, could I include the row.id as > well? > > Thank you > > On Saturday, August 2, 2014 8:35:37 AM UTC+3, Massimo Di Pierro wrote: >> >> You should not do this. If this is meant to be called via ajax it is not >> a good idea to use a SQLFORM because of the associated overhead. Instead >> try: >> >> def addsample(): >> if request.env.request_method == 'POST': >> r = db.sample.validate_and_insert(**request.post_vars) >> return 'NOTOK' if r.errors else str(r.id) >> else: raise HTTP(400) >> >> even better you should return JSON objects (for example return >> response.json(r.errors)). >> >> On Friday, 1 August 2014 19:08:31 UTC-5, desta wrote: >>> >>> Hello everyone, >>> >>> I have this controller which is called through AJAX and submits data to >>> the form. The data is successfully transmitted but when I try to return the >>> submitted row id the controller returns nothing. >>> >>> def addsample(): >>> formSample = SQLFORM(db.sample, _class='form-horizontal', formstyle= >>> 'bootstrap3', _id='sampleForm'); >>> if formSample.accepts(request, hideerror=True, formname=None): >>> return str((formSample.vars.id)) >>> elif formSample.errors: >>> return str("NOTOK") >>> >>> I also tried returning a number (as a string) but it didn't work: >>> return str(15) >>> >>> However, if I return "OK" it works: >>> return str("OK") >>> >>> What am I missing here? >>> >>> Thank you! >>> >> -- 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. For more options, visit https://groups.google.com/d/optout.