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.

Reply via email to