django json http://blog.csdn.net/eengel/article/details/6198585...http://www.yihaomen.com/article/python/279.htm
前台:用DOJO发送AJAX请求,设定返回值为json格式。
var deferred = dojo.xhrPost({
url: "/test_json/",
handleAs: "json",
load: function(response, ioArgs){
return response;
},
error: function(response, ioArgs){
return response;
}
});
deferred.addCallback(function(response){
if(response){
if(!response.length){//json object
alert("id:" + response.id + ",name:" + response.name);
}else if(response.length > 1){//array object
alert(response);
}
}else{
console.error("failed");
}
return response;
});
后台:方法一 将JSON或数组拼装成string类型
def test_json( request ):
result = "{'id': 1, 'name': '虫子'}"
return HttpResponse( result )
这个方法的优点是简单明了,不需要依赖额外的包。缺点是当json或数组很长很复杂时,拼装起来比较麻烦,而且容易出错。
后台:方法二 利用django的simplejson工具
from django.utils import simplejson
from django.core import serializers
class QuerySetEncoder( simplejson.JSONEncoder ):
"""
Encoding QuerySet into JSON format.
"""
def default( self, object ):
try:
return serializers.serialize( "python", object,
ensure_ascii = False )
except:
return simplejson.JSONEncoder.default( self, object )
def test_json( request ):
result = {'id': 1, 'name': "虫子"}
result = simplejson.dumps( result, cls = QuerySetEncoder )
return HttpResponse( result )
若经常需要从后台返回JSON或数组格式的数据,则这种方法比较好。可以事先将QuerySetEncoder封装在独立的函数中,用的时候比平时多一句simplejson.dumps就可以