I have a Django application with the following front-end structure:
Jquery / input.html
<script type="text/javascript">
$(document).ready(function(){
var expr1 = {"name":{"key":""}};
var expr2 = {"name":{"key":""}};
var childFilter1 = {"filter": {"expr":expr1}};
var childFilter2 = {"filter": {"expr":expr2}};
var parentFilter = {"filter": {"func":"AND","leftChild":childFilter1,"rightChild":childFilter2}};
var childFilter3 = {"filter": {"expr":""}};
var wholeParentFilter = {"filter": {"func":"OR","leftChild":childFilter3,"rightChild":parentFilter}};
$.ajax({
url: "/input/",
type: "GET",
data: wholeParentFilter,
dataType: "json",
success: function(input_data){
//alert(input_data);
}
});
})
</script>
Django / views.py:
def input(request):
data = request.GET["filter"]
print data
return HttpResponse(json.dumps("ABC"))
When I try to get JSON value with request.GET["filter"], Django returns the following error and no data print out:
data = request.GET["filter"]
File "C:\Python27\lib\site-package\django-1.6.2-py2.7.egg\django\utils\datastrucutre.py", line 301, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'filter'"
I want to use "filter" as tree because it may include sub-filter, so I don't want to change name of "filter" in JSON, any idea for transferring data from front to end? Thanks a lot.
UPDATE
Problem is caused by wholdPatrentFilter without transferred into JSON object, add $.toJSON could solve it.
$.ajax({
url: "/input/",
type: "GET",
data: $.toJSON(wholeParentFilter),
dataType: "json",
success: function(input_data){
//alert(input_data);
}
});
Thanks a lot @alecxe for your help.