I believe I am using a standard db with id. I used JSON to return the id and it works return 'NOTOK' if r.errors else gluon.contrib.simplejson.dumps([r.id]) The response is correct http://imgur.com/8xzCzU5
Even though I solved my problem (using JSON) it still strange why it cannot return an integer. Thank you. On Saturday, August 2, 2014 8:48:47 PM UTC+3, Massimo Di Pierro wrote: > > 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.