It seems that the function returns the data correctly as you had stated from the beginning. For some reason firefox web tools don't show it. I used 'console.log' and I can see that the data is there.
Sorry for the confusion. Thank you. On Sunday, August 3, 2014 1:21:33 AM UTC+3, desta wrote: > > 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.