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.

Reply via email to