Hello all,
Thanks all for the responses and sorry for the delay in my response. I was
struggling with this and I don't get to solve it yet. The data (string)
passed to the controller as *request.vars.input *looks good but it fails
when I try to load it with json.loads.
This is what I have at this point:
*Controller that is passed to ajax call:*
def test():
print "test called"
print '-'*40
print 'request.vars:'
print request.vars
print '-'*40
print 'request.vars.input:'
print request.vars.input
print '-'*40
print type(request.vars.input)
try:
data = json.loads(request.vars.input)
except:
print "json.loads failed"
return 'ok'
*Print-out when test controller is called by ajax:*
test called
----------------------------------------
request.vars:
<Storage {'input': '{"input":[{"the_owner":1,"category":1,"name":"La marcha
del oro","price":44.45,"id":1,"quantity":100
},{"the_owner":3,"category":3,"name":"Toy
Story","price":34.56,"id":2,"quantity":23},{"the_owner":2,"category":2,"name":
"La
Sirenita","price":56.67,"id":3,"quantity":10},{"the_owner":null,"category":null,"name":null,"price":null,"id":null,"
quantity":null}]}'}>
----------------------------------------
request.vars.input:
{"input":[{"the_owner":1,"category":1,"name":"La marcha del
oro","price":44.45,"id":1,"quantity":100},{"the_owner":3,"ca
tegory":3,"name":"Toy
Story","price":34.56,"id":2,"quantity":23},{"the_owner":2,"category":2,"name":"La
Sirenita","price
":56.67,"id":3,"quantity":10},{"the_owner":null,"category":null,"name":null,"price":null,"id":null,"quantity":null}]}
----------------------------------------
<type 'str'>
False
json.loads failed
*And the JS code (I highlghted the important part)*
{{extend 'layout.html'}}
{{from gluon.serializers import json}}
<script type="text/javascript">
{{=ASSIGNJS(data = data)}}
{{=ASSIGNJS(grid = grid)}}
$(document).ready(function () {
var
container1 = document.getElementById('example1'),
settings1 = {
data: grid,
minSpareRows: 1,
contextMenu: true,
},
hot1;
hot1 = new Handsontable(container1, settings1);
hot1.render();
var test = {'myvar':'soy una variable'};
$("#save").click(function()
{var tableData = JSON.stringify(hot1.getData());
var input = JSON.stringify({"input": hot1.getData()});
* $.ajax({*
* url:'mygrid/test',*
* data: {'input':input},*
* datatype: 'json',*
* type: 'post'*
* });*
alert(input);});
});
</script>
<div id="example1" class="handsontable"></div>
<button name="save" id="save">Save</button>
<div id="target"></div>
I will keep looking into it. If anyone has any ideas or tests, I will try
them.
Thanks again,
C.
El viernes, 20 de febrero de 2015, 15:19:55 (UTC-3), clara escribió:
>
> Hello,
>
> I am making an Ajax call and calling a controller with the json data I
> need to process in the controller.
>
> The problem I am having (and I am sure the answer will be simple and I
> will hate myself for the silly question ) is that if I select
> request.vars.input, its value is not a json object anymore so a loads
> method will fail. It is a string object and if I try to eval(it) I get an
> error. So even when the data is right there I can not use it in the
> controller.
> Any ideas will be more than welcome!
>
> (The controller and its print outs are shown bellow.)
>
> Thanks,
> Clara
>
> def test():
> print "test called"
> print "test called"
> print 'request.vars'
> print request.vars
> print 'request.vars.input'
>
> Here is what the controller prints out:
>
> test called
> request.vars
> <Storage {'input': '[{"the_owner":1,"category":1,"name":"La marcha del
> oro","price":44.45,"id":1,"quantity":100},{"the_owner":3,"c
> ategory":3,"name":"Toy
> Story","price":34.56,"id":2,"quantity":23},{"the_owner":2,"category":2,"name":"La
>
> Sirenita","price":56.67,"
>
> id":3,"quantity":10},{"the_owner":null,"category":null,"name":null,"price":null,"id":null,"quantity":null}]'}>
> request.vars.input
> [{"the_owner":1,"category":1,"name":"La marcha del
> oro","price":44.45,"id":1,"quantity":100},{"the_owner":3,"category":3,"name":"T
> oy
> Story","price":34.56,"id":2,"quantity":23},{"the_owner":2,"category":2,"name":"La
>
> Sirenita","price":56.67,"id":3,"quantity":10}
>
> ,{"the_owner":null,"category":null,"name":null,"price":null,"id":null,"quantity":null}]
>
>
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.